我试图在项目中使用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.lib
,PocoXYZ.dll
的导入库。
使用shared
构建Poco并在链接器搜索路径中提供PocoXYZ.lib
导入库,我已经定义了Poco符号的错误(显然)。
我错过了一些关键的东西,还是Poco构建脚本中的错误?
我已将Poco配置为仅构建以下组件:Foundation,XML,JSON,Util,Net,Crypto,NetSSL_OpenSSL。
此外,我必须调整v140 vcxproj
- Crypto和NetSSL_OpenSSL文件以链接到libeay32.lib
和ssleay32.lib
(OpenSSL DLL的导入库)而不是{{ 1}}和libeay32md.lib
(根据OpenSSL 1.0.2h构建脚本,不知道这些来自何处)。
我在Windows 7上使用Visual Studio 2015 Update 2,在32位Visual Studio Developer Prompt中执行所有操作。
答案 0 :(得分:0)
重新阅读Poco文档后,我终于找到了解决方案:
在Windows上静态使用Poco时,必须在使用Poco编译库/应用程序时指定POCO_STATIC
,否则Poco标头中的多个#pragma comment
指令将默默强制链接到Poco的DLL版本。 / p>
http://pocoproject.org/docs/99150-WindowsPlatformNotes.html
谢谢,RTFM。