簡體   English   中英

Boost Debug和Release Libraries是一樣的嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM