2016-06-21 91 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。