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 как символ без знака. Я получаю ошибку Linker.
m_Builder.Append<unsigned char>(0x01); // Error: LNK1120
m_Builder.Append<unsigned short>(0x0001); // Works
Ошибка из VS2010 (SRY я получил немецкий VS2010):
ошибка LNK2019: Verweis Ауф Nicht aufgelöstes externes Символ "" общественность: пустота __thiscall PacketBuilder :: Append (неподписанные символ) " (? $ Append @ E @ PacketBuilder @@ QAEXE @ Z)" in Funktion "" public: void __thiscall Клиент :: DoHandshake (void) " (? DoHandshake @ Client @@ QAEXXZ)". 1> C: \ XXX \ C++ \ SilkroadEmu \ Debug \ LoginServer.exe : фатальная ошибка LNK1120: 1 nicht aufgelöste externe Verweise.
Перевод на английский:
ошибка LNK2019: неразрешенный внешний символ "" общественности: недействительным __thiscall PacketBuilder :: Append (неподписанные символ)» (?? $ Append @ E @ PacketBuilder @ @ QAEXE @ Z) " в функции" "public: void __thiscall Клиент :: DoHandshake (void)" (? DoHandshake @ Client @@ QAEXXZ) ". 1> C: \ XXX \ C++ \ SilkroadEmu \ Debug \ LoginServer.exe : фатальная ошибка LNK1120: 1 неразрешенный внешний символ.
Можете вы добавить фактические сообщения об ошибках компоновщика на ваш вопрос? –
'LNK1120' сообщает только количество нерешенных внешних. Вам нужно опубликовать сообщение об ошибке всего компоновщика, включая все сообщения 'LNK2001', которые появляются перед сообщением' LNK1120'. Просто сообщая нам, что код ошибки недостаточен, так как существует множество причин ошибки LNK2001. Если эти сообщения об ошибках относятся к коду, который не является частью вашего вопроса, вы должны добавить минимальный фрагмент кода. –
Я могу только догадываться, в чем проблема с текущей информацией, но, возможно, это поможет: http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12 и http: // www.parashift.com/c++-faq-lite/templates.html#faq-35.13. –