PacketBuilder是一个允许写入char *数组的小类。追加功能:带模板的C++ Packet Builder
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作为无符号字符。我收到一个链接错误。从VS2010
m_Builder.Append<unsigned char>(0x01); // Error: LNK1120
m_Builder.Append<unsigned short>(0x0001); // Works
错误(SRY我得到德国VS2010):
错误LNK2019:Verweis奥夫nicht aufgelöstesexternes符号 “” 市民: 无效__thiscall PacketBuilder ::追加(无符号字符) “? (?? $ 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östeexterne Verweise。
翻译成英文:
错误LNK2019:无法解析的外部 符号 “” 市民:无效__thiscall PacketBuilder ::追加(无符号字符)” (?? $追加| 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未解决 外部符号。
您能否将实际的链接器错误消息添加到您的问题中? – 2010-11-07 11:09:51
'LNK1120'只会告诉你未解析的外部数量。您需要发布完整的链接器错误消息,包括LNK1120消息之前的所有LNK2001消息。只是告诉我们错误代码是不够的,因为导致“LNK2001”错误的原因很多。如果这些错误消息引用的代码不属于您的问题,那么您应该添加这些代码的最小代码段。 – 2010-11-07 11:16:42
我只能猜测当前信息给出了什么问题,但也许这些信息会有所帮助:http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12和http:// www.parashift.com/c++-faq-lite/templates.html#faq-35.13。 – 2010-11-07 11:23:31