我在Windows/Visual Studio IDE中開發一個小型的ATL dll,我對C++/boost比較陌生。我在鏈接器選項下添加了boost lib目錄,並將boost根目錄作爲附加的include目錄添加。在我的代碼中,我將它添加爲:如果我只在使用boost時使用頭文件,它會靜態鏈接,還是根本沒有鏈接?
#include <boost/algorithm/string.hpp>
這是靜態鏈接,動態鏈接還是根本不鏈接?
我在Windows/Visual Studio IDE中開發一個小型的ATL dll,我對C++/boost比較陌生。我在鏈接器選項下添加了boost lib目錄,並將boost根目錄作爲附加的include目錄添加。在我的代碼中,我將它添加爲:如果我只在使用boost時使用頭文件,它會靜態鏈接,還是根本沒有鏈接?
#include <boost/algorithm/string.hpp>
這是靜態鏈接,動態鏈接還是根本不鏈接?
這是靜態鏈接,動態鏈接還是根本不鏈接?
答案是「這取決於」。
Boost很大。爲了從道格拉斯亞當斯那裏竊取一條線,Boost「很大,真的很大,你不會相信它有多麼巨大,甚至是令人驚歎的大。」
Boost的某些部分純粹作爲模板實現:沒有調用先前編譯並存儲在某個庫中的函數。只使用Boost的這些部分,不需要Boost庫。
Boost的其他部分確實調用之前已編譯並存儲在某個庫中的函數。 (a)你(或者某個系統管理員)是否將Boost庫建立爲動態庫和靜態庫,以及(b)你(或者你的makefile)是如何實現的,告訴鏈接器對待Boost庫。
包括任何標題都會將該代碼嵌入到源文件中進行編譯。
所以代碼將被鏈接,因爲你所有的符號都是,但是它不是單獨鏈接的。
Boost.StringAlgo是僅標題;頭僅意味着不涉及鏈接。 – ildjarn 2012-01-27 16:38:33
效果與靜態鏈接相同。 – 2012-01-27 16:42:58