更新 SSL 版本后 POCO“无法解析的外部符号”链接器错误

问题描述 投票:0回答:1

我一直在尝试将 POCO 库升级到 1.9.0,这需要我升级 SSL,这更改了一些库名称。我正在使用来自 Shining Light

的 SSL (OpenSSL-Win64-110g)

我能够重新编译新的 poco-1.9.0 库,包括在 vs2015 中重新编译 Crypto 和 Net_SSL_Open_SSL 指向新的 SSL (110g) 版本。

在我的项目中,我引用了新编译的 POCO 库并引用了新的 SSL 库路径。

新的 SSL 似乎已分别用 libcrypto64MT.dll 和 libssl64MT.dll 替换了 ssleay32MT.lib 和 libeay32MT.lib,因此我也更改了项目中的这些引用。

当我编译时,我收到 36 个与 Net、NetSSL 和加密库相关的 LNK2001“无法解析的外部符号”错误。 (如下所列)。

我想知道 SSL 110g 库对于 POCO 1.9 来说太新了,或者需要使用 VS2015 进行编译。但不确定。关于要检查的事情有什么想法吗?

错误列表:

Severity    Code    Description Project File    Line    Source  Error   LNK2001 unresolved external symbol GetAdaptersInfo   Server\trunk\Server\ide\windows\PocoFoundationmt.lib(Environment.obj)
Error   LNK2001 unresolved external symbol __imp_WSAStartup  Server\trunk\Server\ide\windows\PocoNetmt.lib(Net.obj)
Error   LNK2001 unresolved external symbol __imp_WSAStartup  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_WSACleanup  Server\trunk\Server\ide\windows\PocoNetmt.lib(Net.obj)
Error   LNK2001 unresolved external symbol __imp_WSACleanup  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_htons   Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketAddress.obj)
Error   LNK2001 unresolved external symbol __imp_ntohs   Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketAddress.obj)
Error   LNK2001 unresolved external symbol __imp_ntohs   Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketAddressImpl.obj)
Error   LNK2001 unresolved external symbol __imp_ntohs   Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_ntohs   Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_addr.obj)
Error   LNK2001 unresolved external symbol __imp_getservbyname   Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketAddress.obj)
Error   LNK2001 unresolved external symbol __imp_accept  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_accept  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_bind    Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_bind    Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_closesocket     Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_closesocket     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_connect     Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_connect     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_ioctlsocket     Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_ioctlsocket     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_getpeername     Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_getsockname     Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_getsockname     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_getsockopt  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_getsockopt  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_getsockopt  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_listen  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_listen  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_recv    Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_recv    Server\trunk\Server\ide\windows\libcrypto64MT.lib(bss_sock.obj)
Error   LNK2001 unresolved external symbol __imp_recvfrom    Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_select  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_select  Server\trunk\Server\ide\windows\PocoNetmt.lib(Socket.obj)
Error   LNK2001 unresolved external symbol __imp_send    Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_send    Server\trunk\Server\ide\windows\libcrypto64MT.lib(bss_sock.obj)
Error   LNK2001 unresolved external symbol __imp_sendto  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_setsockopt  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_setsockopt  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_shutdown    Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_socket  Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_socket  Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_WSAGetLastError     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock2.obj)
Error   LNK2001 unresolved external symbol __imp_WSAGetLastError     Server\trunk\Server\ide\windows\PocoNetmt.lib(SocketImpl.obj)
Error   LNK2001 unresolved external symbol __imp_WSAGetLastError     Server\trunk\Server\ide\windows\PocoNetmt.lib(Socket.obj)
Error   LNK2001 unresolved external symbol __imp_WSAGetLastError     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_WSAGetLastError     Server\trunk\Server\ide\windows\libcrypto64MT.lib(bss_sock.obj)
Error   LNK2001 unresolved external symbol __imp_gethostname     Server\trunk\Server\ide\windows\PocoNetmt.lib(DNS.obj)
Error   LNK2001 unresolved external symbol __imp_getaddrinfo     Server\trunk\Server\ide\windows\PocoNetmt.lib(DNS.obj)
Error   LNK2001 unresolved external symbol __imp_getaddrinfo     Server\trunk\Server\ide\windows\PocoNetmt.lib(IPAddressImpl.obj)
Error   LNK2001 unresolved external symbol __imp_getaddrinfo     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_addr.obj)
Error   LNK2001 unresolved external symbol __imp_freeaddrinfo    Server\trunk\Server\ide\windows\PocoNetmt.lib(DNS.obj)
Error   LNK2001 unresolved external symbol __imp_freeaddrinfo    Server\trunk\Server\ide\windows\PocoNetmt.lib(IPAddressImpl.obj)
Error   LNK2001 unresolved external symbol __imp_freeaddrinfo    Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_addr.obj)
Error   LNK2001 unresolved external symbol __imp_getnameinfo     Server\trunk\Server\ide\windows\PocoNetmt.lib(DNS.obj)
Error   LNK2001 unresolved external symbol __imp_getnameinfo     Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_addr.obj)
Error   LNK2001 unresolved external symbol __WSAFDIsSet  Server\trunk\Server\ide\windows\PocoNetmt.lib(Socket.obj)
Error   LNK2001 unresolved external symbol __imp_inet_addr   Server\trunk\Server\ide\windows\PocoNetmt.lib(IPAddressImpl.obj)
Error   LNK2001 unresolved external symbol __imp_ntohl   Server\trunk\Server\ide\windows\PocoNetmt.lib(IPAddressImpl.obj)
Error   LNK2001 unresolved external symbol _vsnprintf    Server\trunk\Server\ide\windows\libcrypto64MT.lib(cryptlib.obj)
Error   LNK2001 unresolved external symbol _vsnwprintf   Server\trunk\Server\ide\windows\libcrypto64MT.lib(cryptlib.obj)
Error   LNK2001 unresolved external symbol __iob_func    Server\trunk\Server\ide\windows\libcrypto64MT.lib(eng_openssl.obj)
Error   LNK2001 unresolved external symbol __iob_func    Server\trunk\Server\ide\windows\libcrypto64MT.lib(e_capi.obj)
Error   LNK2001 unresolved external symbol __iob_func    Server\trunk\Server\ide\windows\libcrypto64MT.lib(pem_lib.obj)
Error   LNK2001 unresolved external symbol __iob_func    Server\trunk\Server\ide\windows\libcrypto64MT.lib(ui_openssl.obj)
Error   LNK2001 unresolved external symbol __imp_gethostbyname   Server\trunk\Server\ide\windows\libcrypto64MT.lib(b_sock.obj)
Error   LNK2001 unresolved external symbol __imp_WSASetLastError     Server\trunk\Server\ide\windows\libcrypto64MT.lib(bss_sock.obj)
Error   LNK1120 36 unresolved externals  Server\trunk\Server\ide\windows\x64\Release\iqagent.exe
visual-studio ssl poco
1个回答
2
投票

好吧,我明白了。加密错误是因为我在 POCO 项目链接器中所做的设置没有保存;我注意到在运行编译器时,链接器的输出不包括新的 SSL 库(libcrypto.lib、libssl.lib)等。我还链接到 Crypto 和 Net_SSL 中的静态库。

关于 PocoNET 错误,我必须在链接器 add'l lib 依赖项中包含 ws2_32.lib 和 iphlpapi.lib 。我过去不必这样做。

我希望这对处于类似情况的人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.