Недавно я снова начал на C ++ приложении. Я использую NetLink для сокетов и Visual Studio для разработки.
Я сделал небольшой код, но получил некоторые ошибки. Я включил файлы из NetLink и добавил ws2_32.lib (в компоновщике / общем & в качестве прагматического комментария), но я все же получил эти ошибки:
Error 1 error LNK2019: unresolved external symbol "void __cdecl NL::init(void)" (?init@NL@@YAXXZ) referenced in function _main c:\Users\Joshua\documents\visual studio 2012\Projects\OBPP\OBPP\Main.obj
Error 4 error LNK2019: unresolved external symbol "public: class NL::Socket * __thiscall NL::Socket::accept(void)" (?accept@Socket@NL@@QAEPAV12@XZ) referenced in function "private: virtual void __thiscall OnAccept::exec(class NL::Socket *,class NL::SocketGroup *,void *)" (?exec@OnAccept@@EAEXPAVSocket@NL@@PAVSocketGroup@3@PAX@Z) c:\Users\Joshua\documents\visual studio 2012\Projects\OBPP\OBPP\Main.obj
Error 6 error LNK2019: unresolved external symbol "public: bool __thiscall NL::SocketGroup::listen(unsigned int,void *)" (?listen@SocketGroup@NL@@QAE_NIPAX@Z) referenced in function _main c:\Users\Joshua\documents\visual studio 2012\Projects\OBPP\OBPP\Main.obj
Error 5 error LNK2019: unresolved external symbol "public: __thiscall NL::SocketGroup::SocketGroup(void)" (??0SocketGroup@NL@@QAE@XZ) referenced in function _main c:\Users\Joshua\documents\visual studio 2012\Projects\OBPP\OBPP\Main.obj
Error 2 error LNK2019: unresolved external symbol "public: __thiscall NL::Socket::Socket(unsigned int,enum NL::Protocol,enum NL::IPVer,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned int)" (??0Socket@NL@@QAE@IW4Protocol@1@W4IPVer@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@Z) referenced in function _main c:\Users\Joshua\documents\visual studio 2012\Projects\OBPP\OBPP\Main.obj
Error 3 error LNK2019: unresolved external symbol "public: __thiscall NL::Socket::~Socket(void)" (??1Socket@NL@@QAE@XZ) referenced in function _main c:\Users\Joshua\documents\visual studio 2012\Projects\OBPP\OBPP\Main.obj
Error 7 error LNK1120: 6 unresolved externals c:\users\joshua\documents\visual studio 2012\Projects\OBPP\Debug\OBPP.exe
Код, который я использую (просто хотел попробовать принять):
#include <iostream>
#include "netlink\socket.h"#include "netlink\socket_group.h"
#pragma comment(lib, "Ws2_32.lib")
#define PORT 30000
class OnAccept: public NL::SocketGroupCmd {
void exec(NL::Socket* socket, NL::SocketGroup* group, void* reference) {
NL::Socket* newConnection = socket->accept();
group->add(newConnection);
std::cout << "\nConnection " << newConnection->hostTo() << ":" << newConnection->portTo() << " added...";
std::cout.flush();
}
};
int main()
{
NL::init();
NL::Socket s(PORT);
NL::SocketGroup group;
group.setCmdOnAccept(&OnAccept());
group.add(&s);
if (group.listen(2000))
{
std::cout << "Listening on Sockets, port " << PORT << std::endl;
}
getchar();
}
Я разработчик библиотеки. Его нельзя использовать только с заголовками, вам нужно связать статическую / динамическую скомпилированную библиотеку.
Вы должны сначала собрать библиотеку, чтобы сгенерировать файл .lib. После того, как вы создали файл netLink.lib (или как вы его называете), вы должны добавить эту зависимость к компоновщику.
Я не разработчик Visual Studio, но сообщение об ошибке говорит unresolved external symbol
означает, что компоновщик не может найти некоторые символы.
Посмотрите на команду связывания, она включает библиотеку Netlink?