代码之家  ›  专栏  ›  技术社区  ›  Dr.YSG

nanomsg与vs2017的链接错误

  •  0
  • Dr.YSG  · 技术社区  · 8 年前

    我正在尝试在Windows设备上构建一个nanomsg next gen( https://github.com/nanomsg/nng )。我正在使用VS2017。蛋糕的作用就像一个魔咒。

    我收到链接错误。我已验证nng.lib文件位于:

    D:\源\LinkWareMessageBus\nng\lib

    dumbin.exe说这些符号都已就位(没有编译或链接错误)。

    链接器/常规/附加库目录是:d:\source\linkwareMessageBus\nng\lib

    .h文件读取良好。但我收到以下链接错误:

    严重性代码描述项目文件行抑制状态
    错误lnk2019未解析的外部符号“int”cdecl client(char const*,char const*)函数中引用的“imp”setopt”(?客户端@@yahpbd0@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号uuu imp_uunng_listen在函数“int uu cdecl server(char const*)”中引用?(?服务器@@yahpbd@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号“int”cdecl client(char const*,char const*)函数中引用的“imp”拨号“(?客户端@@yahpbd0@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号“void uu cdecl fatal(char const*,int)”函数中引用的“imp ung u strerror”(?致命的@@yaxpbdh@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号uuu imp_uunng_send在函数“int uu cdecl server(char const*)”中引用”(?服务器@@yahpbd@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号“int”cdecl client(char const*,char const*)函数中引用的“imp”recv“(?客户端@@yahpbd0@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号“int”cdecl client(char const*,char const*)函数中引用的“imp”nng“free”(?客户端@@yahpbd0@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号“imp”open在函数“int”cdecl server(char const*)中引用(?服务器@@yahpbd@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    错误lnk2019未解析的外部符号“imp”open在函数“int”cdecl client(char const*,char const*中引用”(?客户端@@yahpbd0@z)linkwareMessageBus d:\source\linkwareMessageBus\linkwareMessageBus.obj 1
    

    这些是我的VS2017设置(x64.lib和x64项目)。

    我还附加了nng.lib文件中符号的dumpbin。

    我怀疑的是,vs2017没有正确配置以查找.lib(除了向链接器/其他库添加路径之外),我应该怎么做?

    nng.lib符号


    更新

    我不再说这很简单。但我确实走得更远了,也许你能帮我越过终点线。尽管我告诉VS2017在哪里可以找到nng.lib(路径和名称)。我还尝试将它与kernel32.lib user32.lib和其他强制libs一起放入。

    好的。我现在不再得到有关nng XXXX符号的错误。相反,它现在抱怨nng.lib正在寻找的符号。

    见下文:

    这是VS2017链接详细日志的链接: verbose链接日志

    ```

    严重性代码描述项目文件行抑制状态
    错误lnk2019未解析的外部符号uuu imp_wsarecvfrom在函数nni_win_udp_sysfini linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_udp.c.obj)1中引用
    错误lnk2019在函数nni平台定义linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_thread.c.obj)1中引用了未解析的外部符号“imp”wsacleanup
    错误lnk2001未解析的外部符号uu imp_wsacleanup linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_tcp.c.obj)1
    错误lnk2001未解析的外部符号uuu imp_wsacleanup linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_dp.c.obj)1
    错误lnk2019在函数nni_win_tcp_sysfini linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_tcp.c.obj)1中引用的未解析外部符号_uuu imp_bind
    错误lnk2001未解析的外部符号uuu imp_bind linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_dp.c.obj)1
    错误lnk2001未解析的外部符号uuu imp_bind linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_pipe.c.obj)1
    错误lnk2019在函数nni-plat-tcp-ep-init-linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win-tcp.c.obj)1中引用了未解析的外部符号“imp”closesocket
    错误lnk2001未解析的外部符号uu imp_closesocket linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_dp.c.obj)1
    错误lnk2001未解析的外部符号uu imp_closesocket linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_pipe.c.obj)1
    错误lnk2019在函数nni_win_tcp_sysfini linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_tcp.c.obj)1中引用了未解析的外部符号“imp”getsockname
    错误lnk2001未解析的外部符号uu imp_getsockname linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_dp.c.obj)1
    错误lnk2001未解析的外部符号uu imp_getsockname linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_pipe.c.obj)1
    错误lnk2019在函数nni_win_tcp_listen linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_tcp.c.obj)1中引用的未解析外部符号_uuu imp_listen
    错误lnk2001未解析的外部符号uuu imp_listen linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_pipe.c.obj)1
    错误lnk2019在函数nni-plat-tcp-pipe-set-nodelay-linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win-tcp.c.obj)1中引用了未解析的外部符号“imp”setsockopt
    错误lnk2001未解析的外部符号uu imp_setsockopt linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_dp.c.obj)1
    错误lnk2001未解析的外部符号uu imp_setsockopt linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_pipe.c.obj)1
    错误lnk2019在函数nni_plat_tcp_ep_init linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_tcp.c.obj)1中引用的未解析外部符号_uuu imp_socket
    错误lnk2001未解析的外部符号uu imp_socket linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_dp.c.obj)1
    错误lnk2001未解析的外部符号uu imp_socket linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_pipe.c.obj)1
    错误lnk2019在函数nni_win_tcp_sysinit linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_tcp.c.obj)1中引用的未解析外部符号_uuu imp_wsastartup
    错误lnk2001未解析的外部符号uuu imp_wsastartup linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_dp.c.obj)1
    错误lnk2019未解析的外部符号uu imp_wsagetlasterrror,在函数nni_plat_tcp_pipe_set_nodelay linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_tcp.c.obj)1中引用
    错误lnk2019在函数nni-plat-tcp-ep-init-linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win-tcp.c.obj)1中引用了未解析的外部符号“imp”wsaioctl
    错误lnk2019在函数nni_win_tcp_sysfini linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_tcp.c.obj)1中引用的未解析外部符号_uuu imp_wsarecv
    错误lnk2019在函数nni_win_tcp_sysfini linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_tcp.c.obj)1中引用的未解析外部符号_uuu imp_wsasend
    错误lnk2019在函数nni-plat-tcp-ntop-linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win-tcp.c.obj)1中引用的未解析外部符号inet-ntop
    错误lnk2019在函数nni_win_udp_sysfini linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_udp.c.obj)1中引用了未解析的外部符号“imp”wsasendto
    错误lnk2019在函数resolv_ip linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_resolv.c.obj)1中引用的未解析外部符号_uuu imp htons
    错误lnk2019在函数resolv_task linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_resolv.c.obj)1中引用的未解析外部符号_uuimp_getaddrinfo
    错误lnk2019在函数resolv_task linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_resolv.c.obj)1中引用的未解析外部符号_uuimp_freeaddrinfo
    错误lnk2019未解析的外部符号uuu imp_accept在函数nni_plat_pipe_open linkwaremessagebus d:\source\linkwaremessagebus\nng.lib(win_pipe.c.obj)1中引用
    错误lnk2019在函数nni平台pipe打开linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_pipe.c.obj)1中引用的未解析外部符号_uuu imp_connect
    错误lnk2019在函数nni_plat_pipe_open linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_pipe.c.obj)1中引用的未解析外部符号_uuu imp_ioctlsocket
    错误lnk2019未解析的外部符号“imp”htonl,在函数nni平台管道打开LinkWareMessageBus d:\source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)1中引用
    错误lnk2019在函数nni平台管道clear linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_pipe.c.obj)1中引用了未解析的外部符号“imp”recv
    错误lnk2019未解析的外部符号uu imp_send在函数nni_plat_pipe_raise linkwareMessageBus d:\source\linkwareMessageBus\nng.lib(win_pipe.c.obj)1中引用
    错误LNK1120 24未解析的外部linkwareMessageBus d:\source\linkwareMessageBus\x64\debug\linkwareMessageBus.exe 1
    

    ```

    我收到链接错误。我已验证nng.lib文件位于:

    D:\源\LinkWareMessageBus\nng\lib

    dumbin.exe说这些符号都到位了(没有编译或链接错误)

    链接器/常规/附加库目录是:d:\source\linkwareMessageBus\nng\lib

    .h文件读取良好。但我收到以下链接错误:

    Severity    Code    Description Project File    Line    Suppression State
    Error   LNK2019 unresolved external symbol __imp__nng_setopt referenced in function "int __cdecl client(char const *,char const *)" (?client@@YAHPBD0@Z)    LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_listen referenced in function "int __cdecl server(char const *)" (?server@@YAHPBD@Z)  LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_dial referenced in function "int __cdecl client(char const *,char const *)" (?client@@YAHPBD0@Z)  LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_strerror referenced in function "void __cdecl fatal(char const *,int)" (?fatal@@YAXPBDH@Z)    LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_send referenced in function "int __cdecl server(char const *)" (?server@@YAHPBD@Z)    LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_recv referenced in function "int __cdecl client(char const *,char const *)" (?client@@YAHPBD0@Z)  LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_free referenced in function "int __cdecl client(char const *,char const *)" (?client@@YAHPBD0@Z)  LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_pub0_open referenced in function "int __cdecl server(char const *)" (?server@@YAHPBD@Z)   LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    Error   LNK2019 unresolved external symbol __imp__nng_sub0_open referenced in function "int __cdecl client(char const *,char const *)" (?client@@YAHPBD0@Z) LinkWareMessageBus  D:\Source\LinkWareMessageBus\LinkWareMessageBus.obj 1   
    

    这些是我的VS2017设置(x64.lib和x64项目)。

    enter image description here

    我还附加了nng.lib文件中符号的dumpbin。

    我怀疑的是,vs2017没有正确配置以查找.lib(除了向链接器/其他库添加路径之外),我应该怎么做?

    nng.lib symbols


    更新

    我不再说这很简单。但我确实走得更远了,也许你能帮我越过终点线。尽管我告诉VS2017在哪里可以找到nng.lib(路径和名称)。我还尝试将它与kernel32.lib user32.lib和其他强制lib放在一起。

    好啊。我现在不再得到有关nng XXXX符号的错误。相反,它现在抱怨nng.lib正在寻找的符号。

    见下文:

    这是VS2017链接详细日志的链接: verbose link log

    ```

    Severity    Code    Description Project File    Line    Suppression State
    Error   LNK2019 unresolved external symbol __imp_WSARecvFrom referenced in function nni_win_udp_sysfini LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_WSACleanup referenced in function nni_plat_fini    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_thread.c.obj)  1   
    Error   LNK2001 unresolved external symbol __imp_WSACleanup LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_WSACleanup LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_bind referenced in function nni_win_tcp_sysfini    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_bind   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_bind   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_closesocket referenced in function nni_plat_tcp_ep_init    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_closesocket    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_closesocket    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_getsockname referenced in function nni_win_tcp_sysfini LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_getsockname    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_getsockname    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_listen referenced in function nni_win_tcp_listen   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_listen LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_setsockopt referenced in function nni_plat_tcp_pipe_set_nodelay    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_setsockopt LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_setsockopt LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_socket referenced in function nni_plat_tcp_ep_init LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_socket LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_socket LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_WSAStartup referenced in function nni_win_tcp_sysinit  LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2001 unresolved external symbol __imp_WSAStartup LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_WSAGetLastError referenced in function nni_plat_tcp_pipe_set_nodelay   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_WSAIoctl referenced in function nni_plat_tcp_ep_init   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_WSARecv referenced in function nni_win_tcp_sysfini LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_WSASend referenced in function nni_win_tcp_sysfini LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2019 unresolved external symbol inet_ntop referenced in function nni_plat_tcp_ntop   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_tcp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_WSASendTo referenced in function nni_win_udp_sysfini   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_udp.c.obj) 1   
    Error   LNK2019 unresolved external symbol __imp_htons referenced in function resolv_ip LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_resolv.c.obj)  1   
    Error   LNK2019 unresolved external symbol __imp_getaddrinfo referenced in function resolv_task LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_resolv.c.obj)  1   
    Error   LNK2019 unresolved external symbol __imp_freeaddrinfo referenced in function resolv_task    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_resolv.c.obj)  1   
    Error   LNK2019 unresolved external symbol __imp_accept referenced in function nni_plat_pipe_open   LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_connect referenced in function nni_plat_pipe_open  LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_ioctlsocket referenced in function nni_plat_pipe_open  LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_htonl referenced in function nni_plat_pipe_open    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_recv referenced in function nni_plat_pipe_clear    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK2019 unresolved external symbol __imp_send referenced in function nni_plat_pipe_raise    LinkWareMessageBus  D:\Source\LinkWareMessageBus\nng.lib(win_pipe.c.obj)    1   
    Error   LNK1120 24 unresolved externals LinkWareMessageBus  D:\Source\LinkWareMessageBus\x64\Debug\LinkWareMessageBus.exe   1   
    

    ```

    1 回复  |  直到 8 年前
        1
  •  0
  •   TriskalJM    8 年前

    您要查找的符号(基于更新)是ws2_32.lib中的winsock函数。