标签:style blog http color io os 使用 ar for
编译带有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@4 10 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__getservbyname@8,该符号在函数 _WspiapiLegacyGetAddrInfo@16 中被引用 11 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyname@8 12 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyname@8 13 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _WspiapiLegacyGetAddrInfo@16 中被引用 14 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@4 15 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@4 16 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__inet_addr@4,该符号在函数 _WspiapiParseV4Address@8 中被引用 17 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_addr@4 18 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_addr@4 19 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAGetLastError@0,该符号在函数 _WspiapiQueryDNS@24 中被引用 20 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0 21 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0 22 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostbyname@4,该符号在函数 _WspiapiQueryDNS@24 中被引用 23 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyname@4 24 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyname@4 25 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostbyaddr@12,该符号在函数 _WspiapiLegacyGetNameInfo@28 中被引用 26 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyaddr@12 27 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyaddr@12 28 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__getservbyport@8,该符号在函数 _WspiapiLegacyGetNameInfo@28 中被引用 29 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyport@8 30 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__getservbyport@8 31 1>MongoDrv.lib(dbclient.obj) : error LNK2019: 无法解析的外部符号 __imp__ntohs@4,该符号在函数 _WspiapiLegacyGetNameInfo@28 中被引用 32 1>MongoDrv.lib(message.obj) : error LNK2001: 无法解析的外部符号 __imp__ntohs@4 33 1>MongoDrv.lib(sock.obj) : error LNK2001: 无法解析的外部符号 __imp__ntohs@4 34 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@4 40 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@12 42 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@12 45 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 getnameinfo 100 WSAAsyncSelect 101 WSAAsyncGetHostByAddr 102 WSAAsyncGetHostByName 103 WSAAsyncGetProtoByNumber 104 WSAAsyncGetProtoByName 105 WSAAsyncGetServByPort 106 WSAAsyncGetServByName 107 WSACancelAsyncRequest 108 WSASetBlockingHook 109 WSAUnhookBlockingHook 110 WSAGetLastError 111 WSASetLastError 112 WSACancelBlockingCall 113 WSAIsBlocking 114 WSAStartup 115 WSACleanup 116 __WSAFDIsSet 117 WEP
标签:style blog http color io os 使用 ar for
原文地址:http://www.cnblogs.com/elenno/p/ws2_32_lib.html