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をunsignedcharとして使用する場合。リンカーエラーが発生します。
m_Builder.Append<unsigned char>(0x01); // Error: LNK1120
m_Builder.Append<unsigned short>(0x0001); // Works
VS2010からのエラー(ドイツ語vs2010を取得しました):
エラーLNK2019:VerweisaufnichtaufgelöstesexternesSymbol"" 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:1nichtaufgelösteexterneVerweise。
英語に翻訳:
エラー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つの未解決の外部シンボル。