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 用作 unsigned short (WORD)。它工作得很好。如果我使用 T 作为无符号字符。我收到链接器错误。
m_Builder.Append<unsigned char>(0x01); // Error: LNK1120
m_Builder.Append<unsigned short>(0x0001); // Works
来自 VS2010 的错误(对不起,我得到了德语 vs2010):
错误 LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall PacketBuilder::Append(unsigned char)" (??$Append@E@PacketBuilder@@QAEXE@Z)" in Funktion ""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:函数“”公共:void __thiscall Client::DoHandshake(无效)“(?DoHandshake@Client@@QAEXXZ)”。1>C:\XXX\C++\SilkroadEmu\Debug\LoginServer.exe : 致命错误 LNK1120: 1 unsresolved external symbol。