我一直在尝试将 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
好吧,我明白了。加密错误是因为我在 POCO 项目链接器中所做的设置没有保存;我注意到在运行编译器时,链接器的输出不包括新的 SSL 库(libcrypto.lib、libssl.lib)等。我还链接到 Crypto 和 Net_SSL 中的静态库。
关于 PocoNET 错误,我必须在链接器 add'l lib 依赖项中包含 ws2_32.lib 和 iphlpapi.lib 。我过去不必这样做。
我希望这对处于类似情况的人有所帮助。