![](/img/trans.png)
[英]Debug libraries of boost getting used in Release mode in visual c++
[英]Are Boost Debug and Release Libraries the same?
我的項目使用boost-win-1.47-32bit-vs2010庫。 我目前正在調試模式下運行我的應用程序,它似乎運行良好。現在我打算在發布模式下構建它,我也成功地做到了。 但是我擔心的是我使用相同的boost庫。我從來沒有構建引導庫,所以我不知道我使用的引導庫是用於調試模式還是發布模式。 有關如何找到的任何建議。 我正在使用的啟動庫是否可能在發布和調試模式下運行,因為我在更改模式時沒有出現任何錯誤?
更新:
例如,相關文件夾中的每個文件似乎有兩個版本
libboost_thread-vc100-mt-1_47.lib
libboost_thread-vc100-mt-gd-1_47.lib
這是否意味着它包含調試和發布庫。 因為除了VS2010中文件夾的路徑之外,我沒有在輸入屬性中明確指定任何內容。 我認為可能有可能忽略了這個文件夾同時包含Release和debug版本的事實,當我更改構建選項以使用boost調試庫調試它時,當我使用release版本構建時,它構建使用發布庫。
我正在使用的引導庫是否可能在發布和調試模式下運行
不,不是真的。 您將擁有調試和發布版本。 你不應該混合那些。
libboost_thread-vc100-mt-1_47.lib將是您的庫的發布版本。 應用程序的發布版本應鏈接到該版本。 對於調試版本,您可以鏈接libboost_thread-vc100-mt-gd-1_47.lib。
您的編譯器可能不會直接抱怨任何內容,但在運行時可能會出現幾個與C ++運行時相關的問題。 請參閱此帖子: 混合調試和發布庫/二進制文件 - 糟糕的做法?
Boost默認情況下通常會構建調試和發布庫,並將它們安裝在庫安裝目錄中。 (通常是windows上的c:\\Boost\\lib
或unix / linux上的/usr/local
等)。 但是,此行為可以更改,因此您應該檢查。
如果查看庫,您應該看到每個庫的兩個版本,例如:
libboost_unit_test_framework-vc110-mt-1_53.lib
libboost_unit_test_framework-vc110-mt-gd-1_53.lib
上面的第一個是庫的發行版本,而秒中的-gd
表示調試版本,請參閱此頁面了解所使用的命名約定。
現在,您必須確保鏈接到庫的正確版本。 如果您使用的是Visual Studio,那么它將為您選擇正確的庫。 對於其他工具集,您必須為每個構建配置明確選擇要鏈接的正確庫。
注意:Visual Studio包含一個pragma選項,用於指定目標文件應鏈接的庫。 Boost通過auto_link.hpp頭文件使用此選項,如果您使用具有要鏈接的庫的boost庫,將包含該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.