关于libwebsocket移植问题

我在移植libwebsoket一个例子工程的时候,出现了如下的BUG:

1>  所有输出均为最新。
1>websockets_static.lib(libwebsockets.obj) : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 _lws_close_free_wsi 中被引用
1>websockets_static.lib(client-handshake.obj) : error LNK2001: 无法解析的外部符号 __imp__closesocket@4
1>websockets_static.lib(server.obj) : error LNK2001: 无法解析的外部符号 __imp__closesocket@4
1>websockets_static.lib(server.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAGetLastError@0,该符号在函数 _lws_context_init_server 中被引用
1>websockets_static.lib(client.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>websockets_static.lib(libwebsockets.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>websockets_static.lib(output.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>websockets_static.lib(client-handshake.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>websockets_static.lib(lws-plat-win.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>websockets_static.lib(libwebsockets.obj) : error LNK2019: 无法解析的外部符号 __imp__shutdown@8,该符号在函数 _lws_close_free_wsi 中被引用
1>websockets_static.lib(libwebsockets.obj) : error LNK2019: 无法解析的外部符号 __imp__freeaddrinfo@4,该符号在函数 _lws_get_addresses 中被引用
1>websockets_static.lib(client-handshake.obj) : error LNK2001: 无法解析的外部符号 __imp__freeaddrinfo@4
1>websockets_static.lib(libwebsockets.obj) : error LNK2019: 无法解析的外部符号 __imp__getaddrinfo@16,该符号在函数 _lws_get_addresses 中被引用
1>websockets_static.lib(client-handshake.obj) : error LNK2001: 无法解析的外部符号 __imp__getaddrinfo@16
1>websockets_static.lib(libwebsockets.obj) : error LNK2019: 无法解析的外部符号 __imp__getnameinfo@28,该符号在函数 _lws_get_addresses 中被引用
1>websockets_static.lib(libwebsockets.obj) : error LNK2019: 无法解析的外部符号 __imp__getpeername@12,该符号在函数 _lws_get_peer_addresses 中被引用
1>websockets_static.lib(output.obj) : error LNK2019: 无法解析的外部符号 __imp__recv@16,该符号在函数 _lws_ssl_capable_read_no_ssl 中被引用
1>websockets_static.lib(client.obj) : error LNK2001: 无法解析的外部符号 __imp__recv@16
1>websockets_static.lib(output.obj) : error LNK2019: 无法解析的外部符号 __imp__send@16,该符号在函数 _lws_ssl_capable_write_no_ssl 中被引用
1>websockets_static.lib(client-handshake.obj) : error LNK2001: 无法解析的外部符号 __imp__send@16
1>websockets_static.lib(client-handshake.obj) : error LNK2019: 无法解析的外部符号 __imp__connect@12,该符号在函数 _lws_client_connect_2 中被引用
1>websockets_static.lib(client-handshake.obj) : error LNK2019: 无法解析的外部符号 __imp__bind@12,该符号在函数 _lws_client_connect_2 中被引用
1>websockets_static.lib(server.obj) : error LNK2001: 无法解析的外部符号 __imp__bind@12
1>websockets_static.lib(client-handshake.obj) : error LNK2019: 无法解析的外部符号 __imp__socket@12,该符号在函数 _lws_client_connect_2 中被引用
1>websockets_static.lib(server.obj) : error LNK2001: 无法解析的外部符号 __imp__socket@12
1>websockets_static.lib(client-handshake.obj) : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _lws_client_connect_2 中被引用
1>websockets_static.lib(server.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@4
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__select@20,该符号在函数 _lws_poll_listen_fd 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSASetEvent@4,该符号在函数 _lws_cancel_service 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAEnumNetworkEvents@12,该符号在函数 _lws_plat_service 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAResetEvent@4,该符号在函数 _lws_plat_service 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAWaitForMultipleEvents@20,该符号在函数 _lws_plat_service 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__ioctlsocket@12,该符号在函数 _lws_plat_set_socket_options 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__getprotobyname@4,该符号在函数 _lws_plat_set_socket_options 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAIoctl@36,该符号在函数 _lws_plat_set_socket_options 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__setsockopt@20,该符号在函数 _lws_plat_set_socket_options 中被引用
1>websockets_static.lib(server.obj) : error LNK2001: 无法解析的外部符号 __imp__setsockopt@20
1>websockets_static.lib(client.obj) : error LNK2001: 无法解析的外部符号 __imp__setsockopt@20
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _lws_plat_context_early_init 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSACloseEvent@4,该符号在函数 _lws_plat_context_early_destroy 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSACleanup@0,该符号在函数 _lws_plat_context_late_destroy 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostbyname@4,该符号在函数 _interface_to_sa 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__inet_addr@4,该符号在函数 _interface_to_sa 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAEventSelect@12,该符号在函数 _lws_plat_insert_socket_into_fds 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSACreateEvent@0,该符号在函数 _lws_plat_insert_socket_into_fds 中被引用
1>websockets_static.lib(lws-plat-win.obj) : error LNK2019: 无法解析的外部符号 __imp__WSAAddressToStringW@20,该符号在函数 _lws_plat_inet_ntop 中被引用
1>websockets_static.lib(server.obj) : error LNK2019: 无法解析的外部符号 __imp__listen@8,该符号在函数 _lws_context_init_server 中被引用
1>websockets_static.lib(server.obj) : error LNK2019: 无法解析的外部符号 __imp__ntohs@4,该符号在函数 _lws_context_init_server 中被引用
1>websockets_static.lib(server.obj) : error LNK2019: 无法解析的外部符号 __imp__getsockname@12,该符号在函数 _lws_context_init_server 中被引用
1>websockets_static.lib(server.obj) : error LNK2019: 无法解析的外部符号 __imp__accept@12,该符号在函数 _lws_server_socket_service 中被引用
1>websockets_static.lib(server.obj) : error LNK2019: 无法解析的外部符号 __imp__gethostname@8,该符号在函数 _lws_server_get_canonical_hostname 中被引用
1>D:\webSocket_c\test_libwebsocket\test\Debug\test2.exe : fatal error LNK1120: 35 个无法解析的外部命令


其实问题是缺少了 ws2_32.lib这个库


该库对应ws2_32.dll,提供了对以下网络相关API的支持,若使用其中的API,则应该将ws2_32.lib加入工程(否则需要动态载入ws2_32.dll)。
accept
bind
closesocket
connect
getpeername
getsockname
getsockopt
htonl
htons
ioctlsocket
inet_addr
inet_ntoa
listen
ntohl
ntohs
recv
recvfrom
select
send
sendto
setsockopt
shutdown
socket
GetAddrInfoW
GetNameInfoW
WSApSetPostRoutine
FreeAddrInfoW
WPUCompleteOverlappedRequest
WSAAccept
WSAAddressToStringA
WSAAddressToStringW
WSACloseEvent
WSAConnect
WSACreateEvent
WSADuplicateSocketA
WSADuplicateSocketW
WSAEnumNameSpaceProvidersA
WSAEnumNameSpaceProvidersW
WSAEnumNetworkEvents
WSAEnumProtocolsA
WSAEnumProtocolsW
WSAEventSelect
WSAGetOverlappedResult
WSAGetQOSByName
WSAGetServiceClassInfoA
WSAGetServiceClassInfoW
WSAGetServiceClassNameByClassIdA
WSAGetServiceClassNameByClassIdW
WSAHtonl
WSAHtons
gethostbyaddr
gethostbyname
getprotobyname
getprotobynumber
getservbyname
getservbyport
gethostname
WSAInstallServiceClassA
WSAInstallServiceClassW
WSAIoctl
WSAJoinLeaf
WSALookupServiceBeginA
WSALookupServiceBeginW
WSALookupServiceEnd
WSALookupServiceNextA
WSALookupServiceNextW
WSANSPIoctl
WSANtohl
WSANtohs
WSAProviderConfigChange
WSARecv
WSARecvDisconnect
WSARecvFrom
WSARemoveServiceClass
WSAResetEvent
WSASend
WSASendDisconnect
WSASendTo
WSASetEvent
WSASetServiceA
WSASetServiceW
WSASocketA
WSASocketW
WSAStringToAddressA
WSAStringToAddressW
WSAWaitForMultipleEvents
WSCDeinstallProvider
WSCEnableNSProvider
WSCEnumProtocols
WSCGetProviderPath
WSCInstallNameSpace
WSCInstallProvider
WSCUnInstallNameSpace
WSCUpdateProvider
WSCWriteNameSpaceOrder
WSCWriteProviderOrder
freeaddrinfo
getaddrinfo
getnameinfo
WSAAsyncSelect
WSAAsyncGetHostByAddr
WSAAsyncGetHostByName
WSAAsyncGetProtoByNumber
WSAAsyncGetProtoByName
WSAAsyncGetServByPort
WSAAsyncGetServByName
WSACancelAsyncRequest
WSASetBlockingHook
WSAUnhookBlockingHook
WSAGetLastError
WSASetLastError
WSACancelBlockingCall
WSAIsBlocking
WSAStartup
WSACleanup
__WSAFDIsSet
WEP

虽然是因为对ws2_32.lib库不了解,但是当时如果能直接搜索函数的名字这个问题也就可以轻松解决了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值