PacketBuilder - это маленький класс, который позволяет записывать в массив char *.Функции приложения:
template <class T>
void PacketBuilder::Append(const T value)
{
memcpy((&m_Buffer) + m_Index, (const void*) &value, sizeof(T));
m_Index += sizeof(T);
}
Компиляция без ошибок.Если я позвоню Append и использую T как беззнаковое короткое слово (WORD).Работает отлично.Если я использую T как неподписанный символ.Я получаю ошибку компоновщика.
m_Builder.Append<unsigned char>(0x01); // Error: LNK1120
m_Builder.Append<unsigned short>(0x0001); // Works
Ошибка VS2010 (sry, я получил немецкий vs2010):
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "" public: void __thiscallPacketBuilder :: Append (unsigned char) "(?? $ Append @ E @ PacketBuilder @@ QAEXE @ Z)" в Функциях "" public: void __thiscall Client :: DoHandshake (void) "(? DoHandshake @ Client @@ QAEXXZ)».1> C: \ XXX \ C ++ \ SilkroadEmu \ Debug \ LoginServer.exe: фатальная ошибка LNK1120: 1 nicht aufgelöste externe Verweise.
Перевод на английский:
ошибкаLNK2019: Неразрешенный внешний символ "" public: void __thiscall PacketBuilder :: Append (unsigned char) "(?? $ Append @ E @ PacketBuilder @@ QAEXE @ Z)" in Function "" public: void __thiscall Client :: DoHandshake (void) "(? DoHandshake @ Client @@ QAEXXZ)".1> C: \ XXX \ C ++ \ SilkroadEmu \ Debug \ LoginServer.exe: фатальная ошибка LNK1120: 1 неразрешенный внешний символ.