2016-06-21 43 views
0

我想在我的项目中使用Poco作为动态运行时的静态库。我下载了Poco 1.7.3的完整源代码,并使用buildwin.bat脚本使用我自编译的OpenSSL 1.0.2h共享库(即调整了buildwin.bat中的路径)来编译这些库。Poco作为动态运行库的静态库需要导入DLL库吗?

生产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构建脚本中的错误?


我已经配置波科只建立以下组件:基础,XML,JSON的Util,网络,加密,NetSSL_OpenSSL。

此外,我不得不调整V140加密和NetSSL_OpenSSL的vcxproj -files链接到libeay32.libssleay32.lib(对于OpenSSL的DLL文件的导入库),而不是libeay32md.libssleay32md.lib(不知道在哪里,这些可能来自基于OpenSSL 1.0.2h构建脚本)。

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

回答

1

后重新阅读波科文档,我终于找到了解决办法:

当静态地在Windows上使用波科,必须编制使用波科库/应用程序时指定POCO_STATIC,否则几个#pragma comment指令在波索的标题将静静地强制链接到Poco的DLL版本。

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

谢谢,RTFM。