Poco作为具有动态运行时的静态库需要导入DLL的库?

时间:2016-06-21 06:52:36

标签: windows static-linking poco-libraries

我试图在项目中使用Poco作为动态运行时的静态库。我已经下载了完整的Poco 1.7.3源代码,并使用buildwin.bat脚本使用我自编的OpenSSL 1.0.2h共享库来编译库(即调整buildwin.bat中的路径)

通过PocoXYZmd.lib制作buildwin.bat 140 build static_md debug Win32 nosamples notests msbuild可以正常使用。

但是,当我尝试在我自己的项目中链接PocoXYZmd.lib时,链接器会搜索PocoXYZ.libPocoXYZ.dll的导入库。

使用shared构建Poco并在链接器搜索路径中提供PocoXYZ.lib导入库,我已经定义了Poco符号的错误(显然)。

我错过了一些关键的东西,还是Poco构建脚本中的错误?

我已将Poco配置为仅构建以下组件:Foundation,XML,JSON,Util,Net,Crypto,NetSSL_OpenSSL。

此外,我必须调整v140 vcxproj - Crypto和NetSSL_OpenSSL文件以链接到libeay32.libssleay32.lib(OpenSSL DLL的导入库)而不是{{ 1}}和libeay32md.lib(根据OpenSSL 1.0.2h构建脚本,不知道这些来自何处)。

我在Windows 7上使用Visual Studio 2015 Update 2,在32位Visual Studio Developer Prompt中执行所有操作。

1 个答案:

答案 0 :(得分:0)

重新阅读Poco文档后,我终于找到了解决方案:

在Windows上静态使用Poco时,必须在使用Poco编译库/应用程序时指定POCO_STATIC,否则Poco标头中的多个#pragma comment指令将默默强制链接到Poco的DLL版本。 / p>

http://pocoproject.org/docs/99150-WindowsPlatformNotes.html

谢谢,RTFM。