библиотека poco, статическое связывание (MT)

#c

#c

Вопрос:

Мне нужно скомпилировать мою программу в многопоточном режиме (время выполнения), и я установил библиотеку poco для статического режима и dll с использованием vcpkg, и я уже добавил :

 <PropertyGroup Label="Globals">
 ...
 <VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
 <VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
 

для моего проекта для компиляции в режиме mt в mt dll нет проблем с компиляцией, но когда я хочу скомпилировать его в режиме mt, у меня возникают следующие ошибки :

 1>PocoNetmt.lib(Net.obj) : error LNK2001: unresolved external symbol __imp_WSAStartup
1>libcrypto.lib(b_sock.obj) : error LNK2001: unresolved external symbol __imp_WSAStartup
1>PocoNetmt.lib(Net.obj) : error LNK2001: unresolved external symbol __imp_WSACleanup
1>libcrypto.lib(b_sock.obj) : error LNK2001: unresolved external symbol __imp_WSACleanup
1>PocoNetmt.lib(SocketAddress.obj) : error LNK2001: unresolved external symbol __imp_htons
1>PocoNetmt.lib(SocketAddress.obj) : error LNK2001: unresolved external symbol __imp_ntohs
1>PocoNetmt.lib(SocketAddressImpl.obj) : error LNK2001: unresolved external symbol __imp_ntohs
1>libcrypto.lib(b_sock.obj) : error LNK2001: unresolved external symbol __imp_ntohs
1>libcrypto.lib(b_addr.obj) : error LNK2001: unresolved external symbol __imp_ntohs
1>PocoNetmt.lib(SocketAddress.obj) : error LNK2001: unresolved external symbol __imp_getservbyname
1>PocoNetmt.lib(DNS.obj) : error LNK2001: unresolved external symbol __imp_gethostname
...
 

кажется, проблема в сетевых заголовках и моих заголовках:

 #include "Poco/Net/MailMessage.h"
#include "Poco/Net/MailRecipient.h"
#include "Poco/Net/SMTPClientSession.h"
#include "Poco/Net/NetException.h"
#include "Poco/Net/SecureSMTPClientSession.h"
#include "Poco/Net/InvalidCertificateHandler.h"
#include "Poco/Net/AcceptCertificateHandler.h"
#include "Poco/Net/SSLManager.h"
#include "Poco/Net/SecureStreamSocket.h"
#include "Poco/Net/MailRecipient.h"
 

Я также пытался добавить ws2_32.lib и iphlpapi.lib к дополнительным зависимостям, но у меня появились новые ошибки, такие как неразрешенный внешний символ … , почему это происходит?

Ответ №1:

Я, наконец, понял, как решить эту проблему, через 3 дня нам нужно добавить crypt32.lib и ws2_32.lib в компоновщик / дополнительные зависимости. Я надеюсь, что это поможет кому-то в подобных обстоятельствах 🙂