C++ NetLink 套接字错误

标签 c++ sockets netlink

我最近又开始开发 C++ 应用程序。我正在使用 NetLink for Sockets 和 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();
}

最佳答案

我是图书馆的开发者。不能只和headers一起使用,需要链接静态/动态编译库。

您必须先构建库,才能生成 .lib 文件。一旦构建了 netLink.lib 文件(或任何您命名的文件),您必须将该依赖项添加到链接器。

关于C++ NetLink 套接字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022723/

相关文章:

c++ - 在添加新记录和访问记录时遇到问题

c++ - 在命名空间 C++ 中隐藏变量

c - 如何在特定 IP 上打开套接字

flash - AS3-Flash/AIR套接字通信writeUTFBytes仅工作一次

sockets - web.whatsapp.com如何运作?

c - 应用程序未收到 iptable 修改的 Netlink 通知

c++ - 不同字符编码之间的故障安全转换

c++ - JRTPLIB/header include问题

linux - 这个宏_IOR(MY_MACIG, 0, int) 是什么意思?

c - 如何使用netlink进行IPC?