【发布时间】:2017-03-07 22:00:06
【问题描述】:
vs2015 社区,x64,调试,提升 1.63
- 新建空项目
-
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)
{
}
- 构建解决方案
- 结果:
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 ==========
那个 lib 文件在哪里被添加到项目中?不是boostLibTest.vcxproj,也不是编译器的命令行。
我想编写一个使用 boost 的静态库,我可以从另一个不需要/不需要 boost 的应用程序中访问它,但这种自动包含-boost 依赖性阻止了我这样做。
【问题讨论】:
-
Boost 标头包含编译指示告诉链接器要链接哪些库。 msdn.microsoft.com/en-us/library/7f0aews7.aspx, boost.org/doc/libs/1_63_0/boost/config/auto_link.hpp
-
哎呀!不知道 pragmas 可以做到这一点:\ ...我可以将其作为一个单独的问题提出,但在我的静态库示例中,即使我在静态库中提供了 boost 库,也不需要单独的应用程序/使用 boost 仍然需要那个 boost 库。
-
一定有什么东西让单独的应用程序认为它需要 boost 库。您确定没有间接包含 boost 标头吗?
-
如果你不希望它自动链接,那你为什么不干脆disable that feature?
标签: c++ boost visual-studio-2015