2011-09-19 83 views
1

我想在VS2010上構建和運行Boost.Log庫。在VS2010上升壓日誌鏈接錯誤

我從他們SVN中的trunk中獲取了最新的文件。 我將所有的頭文件和源文件拖放到一個win32.exe項目中,設置所有boost的(1.47)include \ lib目錄。 使用.mc文件播放了一段時間後,我設法從中生成頭文件和.rc文件。

還確保運行時庫設置爲多線程調試DLL(/ MDd)。

我主要CPP文件是這樣的:

#include "stdafx.h" 
#include <boost/log/trivial.hpp> 

int _tmain(int argc, _TCHAR* argv[]){ 
    BOOST_LOG_TRIVIAL(error) << "An error severity message"; } 

一切編譯,但後來我得到這個鏈接錯誤:

錯誤LNK1104:無法打開文件「libboost_log_setup-VC100-MT-GD-1_47.lib '

問題產生: 我正在構建一個.exe項目,爲什麼要查找這個.lib文件?我有來源和所有。 鏈接器如何知道名稱'libboost_log_setup-vc100-mt-gd-1_47'?我在鏈接選項中找不到任何剩餘部分,也沒有在源代碼中找到它。

我能在這裏做什麼?

這將是最好的,如果有人能指導我已經建立和工作的Boost.Log的VS2010 .lib。

P.S. 在此之前,我試圖從boost.log源文件編譯一個.lib文件,並讓另一個exe項目使用它。 .lib構建得很好。 但在客戶端項目中,我收到了此類錯誤:

錯誤LNK2019:無法解析的外部符號「void __cdecl boost :: log_mt_nt5 :: trivial :: aux :: init(void)」(?init @ aux @ trivial @ log_mt_nt5 @ boost @@ YAXXZ)在函數「public:static class boost :: log_mt_nt5 :: sources :: severity_logger_mt__cdecl boost :: log_mt_nt5 :: trivial :: logger :: construct_logger(void)」(?construct_logger @ logger @ trivial @ log_mt_nt5 @ boost @@ SA?AV?$ severity_logger_mt @ W4severity_level @ trivial @ log_mt_nt5 @ boost @@@ sources @ 34 @ XZ)

+0

除此之外,我甚至通過2.0使用了許多項目的boost日誌,然後最終擱置了它(不幸的是)。一旦你超越了樣本所涵蓋的任務,看起來過於設計,文檔不足,並且一般都很笨拙。此外,Google日誌記錄庫使用的條件/嚴重性技巧實際上已被優化得很好; boost.log在確定是否發送到輸出之前對整行進行格式化。 – adzm

回答

0

Boost.Log是一個已編譯的庫;它需要建立。你可以使用bjam來構建它,就像其餘的boost一樣。

正在搜索的文件名稱是它自動鏈接的結果。檢查各種選項。

+0

我可以尋找什麼樣的選擇?我無法找到使用bjam和vs2010構建新手指南。你能推薦一個嗎? – Leo

+0

入門指南解釋了幾乎所有你需要的東西。 http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html#or-build-binaries-from-source只需在boost分發的其餘部分添加boost.log文件即可。它應該與其他所有東西一起自動構建它,如果不是的話,你可以在命令行中添加--with-log。要小心使用臨時文件和所有構建變體的總體構建過程需要幾個hd空間。 – adzm

+0

非常感謝,它的工作。我遵循從「5.3或從源構建二進制文件」開始的方向,並使用b2和--with-log指令構建 – Leo