2017-03-07 29 views
1

vs2015社區,64位,調試,提高1.63如何視覺工作室(MS編譯器)知道它需要特定的Boost庫

  • 新的空項目
  • Properties->C++->General->Additional Include Directories添加 "C:\Program Files\boost_1_63_0"添加新的C++文件,Source.cpp
#include "boost/make_shared.hpp" 
#include "boost/thread.hpp" 

void main(int argc, char **argv) 
{ 
} 
  • 生成解決方案
  • 結果:如果是,LIB文件被添加到該項目
1>------ Build started: Project: boostLibTest, Configuration: Debug x64 ------ 
1> Source.cpp 
1>LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc140-mt-gd-1_63.lib' 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

?這不是boostLibTest.vcxproj,也不是編譯器的命令行。

我想編寫一個靜態庫,使用boost可以從另一個不需要boost的應用程序訪問,但是這種auto-include-boost-dependency阻止我這樣做。

+1

Boost標頭包含編譯指示,告訴鏈接程序要鏈接的庫。 https://msdn.microsoft.com/en-us/library/7f0aews7.aspx,http://www.boost.org/doc/libs/1_63_0/boost/config/auto_link.hpp –

+0

http:// stackoverflow。 com/q/5184889/1460794 – wally

+0

哎呀!不知道編譯指示可以做到這一點:\ ...我可以問它作爲一個單獨的問題,但在我的靜態庫示例中,即使我在靜態庫中提供boost庫,單獨的應用程序不需要/使用boost仍然要求提升庫。 – SolarisPol

回答

2

還有#pragma MSVC支持讓頭文件狀態爲「您需要此庫」。

Boost顯然使用它們。

理想情況下,boost應該只將它們包含在不是「僅標頭」的頭文件中。粒度可能不完美。但是如果您只需要一些來自"boost/thread.hpp"的枚舉值和其他僅包含頭文件的數據,請檢查它們是否包含在「僅頭文件」頭中。