首页 > 代码库 > ws2_32.lib 引发的LNK2019问题解决办法
ws2_32.lib 引发的LNK2019问题解决办法
编译带有MongoDB c++ 驱动库的时候,出现了大量LNK2019的错误
1 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__WSASetLastError@4,该符号在函数 _WspiapiGetNameInfo@28 中被引用 2 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__WSASetLastError@4 3 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__WSASetLastError@4 4 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__inet_ntoa@4,该符号在函数 _WspiapiLegacyGetAddrInfo@16 中被引用 5 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_ntoa@4 6 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_ntoa@4 7 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__htonl@4,该符号在函数 _WspiapiLegacyGetAddrInfo@16 中被引用 8 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__htonl@4 9 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__htonl@410 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__getservbyname@8,该符号在函数 _WspiapiLegacyGetAddrInfo@16 中被引用11 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyname@812 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyname@813 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _WspiapiLegacyGetAddrInfo@16 中被引用14 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@415 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@416 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__inet_addr@4,该符号在函数 _WspiapiParseV4Address@8 中被引用17 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_addr@418 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_addr@419 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAGetLastError@0,该符号在函数 _WspiapiQueryDNS@24 中被引用20 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@021 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@022 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostbyname@4,该符号在函数 _WspiapiQueryDNS@24 中被引用23 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyname@424 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyname@425 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostbyaddr@12,该符号在函数 _WspiapiLegacyGetNameInfo@28 中被引用26 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyaddr@1227 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyaddr@1228 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__getservbyport@8,该符号在函数 _WspiapiLegacyGetNameInfo@28 中被引用29 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyport@830 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyport@831 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__ntohs@4,该符号在函数 _WspiapiLegacyGetNameInfo@28 中被引用32 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__ntohs@433 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__ntohs@434 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__accept@12,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用35 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 ___WSAFDIsSet@8,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用36 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__select@20,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用37 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__listen@8,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用38 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用39 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__closesocket@440 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__bind@12,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用41 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__bind@1242 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__setsockopt@20,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用43 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__socket@12,该符号在函数 "public: void __thiscall mongo::Listener::initAndListen(void)" (?initAndListen@Listener@mongo@@QAEXXZ) 中被引用44 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__socket@1245 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__connect@12,该符号在函数 "public: virtual void __thiscall mongo::ConnectBG::run(void)" (?run@ConnectBG@mongo@@UAEXXZ) 中被引用46 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__send@16,该符号在函数 "public: void __thiscall mongo::MessagingPort::send(char const *,int,char const *)" (?send@MessagingPort@mongo@@QAEXPBDH0@Z) 中被引用47 1>MongoDrv.lib(message.obj) : error LNK2019: 无法解析的外部符号 __imp__recv@16,该符号在函数 "public: void __thiscall mongo::MessagingPort::recv(char *,int)" (?recv@MessagingPort@mongo@@QAEXPADH@Z) 中被引用48 1>MongoDrv.lib(sock.obj) : error LNK2019: 无法解析的外部符号 __imp__sendto@24,该符号在函数 "public: int __thiscall mongo::UDPConnection::sendto(char *,int,struct mongo::SockAddr const &)" (?sendto@UDPConnection@mongo@@QAEHPADHABUSockAddr@2@@Z) 中被引用49 1>MongoDrv.lib(sock.obj) : error LNK2019: 无法解析的外部符号 __imp__getsockopt@20,该符号在函数 "public: bool __thiscall mongo::UDPConnection::init(struct mongo::SockAddr const &)" (?init@UDPConnection@mongo@@QAE_NABUSockAddr@2@@Z) 中被引用50 1>MongoDrv.lib(sock.obj) : error LNK2019: 无法解析的外部符号 __imp__recvfrom@24,该符号在函数 "public: int __thiscall mongo::UDPConnection::recvfrom(char *,int,struct mongo::SockAddr &)" (?recvfrom@UDPConnection@mongo@@QAEHPADHAAUSockAddr@2@@Z) 中被引用51 1>MongoDrv.lib(sock.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostname@8,该符号在函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl mongo::getHostName(void)" (?getHostName@mongo@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 中被引用52 1>MongoDrv.lib(sock.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 "public: __thiscall mongo::`anonymous namespace‘::WinsockInit::WinsockInit(void)" (??0WinsockInit@?A0xfa0c0041@mongo@@QAE@XZ) 中被引用
解决方法: #pragma comment(lib,"ws2_32.lib") 或在工程设置中手工链入ws2_32.lib ( 工程属性->配置属性->链接器->输入->附加依赖项 添加ws2_32.lib )
两种方法都一样,但如果在代码里添加,则其他人用你的项目时就不需要手动修改工程配置了
详参: http://hi.baidu.com/story_of_water/item/7de81e3eebf61b302e20c481
ws2_32.lib:在网络编程中出现, 提供了对以下网络相关API的支持,若使用其中的API,则应该将ws2_32.lib加入工程(否则需要动态载入ws2_32.dll)。
1 accept 2 bind 3 closesocket 4 connect 5 getpeername 6 getsockname 7 getsockopt 8 htonl 9 htons 10 ioctlsocket 11 inet_addr 12 inet_ntoa 13 listen 14 ntohl 15 ntohs 16 recv 17 recvfrom 18 select 19 send 20 sendto 21 setsockopt 22 shutdown 23 socket 24 GetAddrInfoW 25 GetNameInfoW 26 WSApSetPostRoutine 27 FreeAddrInfoW 28 WPUCompleteOverlappedRequest 29 WSAAccept 30 WSAAddressToStringA 31 WSAAddressToStringW 32 WSACloseEvent 33 WSAConnect 34 WSACreateEvent 35 WSADuplicateSocketA 36 WSADuplicateSocketW 37 WSAEnumNameSpaceProvidersA 38 WSAEnumNameSpaceProvidersW 39 WSAEnumNetworkEvents 40 WSAEnumProtocolsA 41 WSAEnumProtocolsW 42 WSAEventSelect 43 WSAGetOverlappedResult 44 WSAGetQOSByName 45 WSAGetServiceClassInfoA 46 WSAGetServiceClassInfoW 47 WSAGetServiceClassNameByClassIdA 48 WSAGetServiceClassNameByClassIdW 49 WSAHtonl 50 WSAHtons 51 gethostbyaddr 52 gethostbyname 53 getprotobyname 54 getprotobynumber 55 getservbyname 56 getservbyport 57 gethostname 58 WSAInstallServiceClassA 59 WSAInstallServiceClassW 60 WSAIoctl 61 WSAJoinLeaf 62 WSALookupServiceBeginA 63 WSALookupServiceBeginW 64 WSALookupServiceEnd 65 WSALookupServiceNextA 66 WSALookupServiceNextW 67 WSANSPIoctl 68 WSANtohl 69 WSANtohs 70 WSAProviderConfigChange 71 WSARecv 72 WSARecvDisconnect 73 WSARecvFrom 74 WSARemoveServiceClass 75 WSAResetEvent 76 WSASend 77 WSASendDisconnect 78 WSASendTo 79 WSASetEvent 80 WSASetServiceA 81 WSASetServiceW 82 WSASocketA 83 WSASocketW 84 WSAStringToAddressA 85 WSAStringToAddressW 86 WSAWaitForMultipleEvents 87 WSCDeinstallProvider 88 WSCEnableNSProvider 89 WSCEnumProtocols 90 WSCGetProviderPath 91 WSCInstallNameSpace 92 WSCInstallProvider 93 WSCUnInstallNameSpace 94 WSCUpdateProvider 95 WSCWriteNameSpaceOrder 96 WSCWriteProviderOrder 97 freeaddrinfo 98 getaddrinfo 99 getnameinfo100 WSAAsyncSelect101 WSAAsyncGetHostByAddr102 WSAAsyncGetHostByName103 WSAAsyncGetProtoByNumber104 WSAAsyncGetProtoByName105 WSAAsyncGetServByPort106 WSAAsyncGetServByName107 WSACancelAsyncRequest108 WSASetBlockingHook109 WSAUnhookBlockingHook110 WSAGetLastError111 WSASetLastError112 WSACancelBlockingCall113 WSAIsBlocking114 WSAStartup115 WSACleanup116 __WSAFDIsSet117 WEP
ws2_32.lib 引发的LNK2019问题解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。