Boost:链接由bjam命名的lib时出现致命错误LNK1104

时间:2015-02-05 17:15:35

标签: c++ visual-studio-2012 boost

我们使用bjam使用以下参数构建boost

  bjam --prefix=.\vs2012\x86\static --includedir=.\include --build-dir=.\build\vs2012\x86 --layout=system --build-type=minimal --without-mpi --without-python toolset=msvc-11.0 variant=release threading=multi link=static runtime-link=shared define=_BIND_TO_CURRENT_VCLIBS_VERSION address-model=32 install

所以lib名称看起来像libboost_unit_test_framework.lib。但是在构建项目时,我得到fatal error LNK1104: cannot open file 'libboost_unit_test_framework-vc110-mt-1_53.lib' 好吧,我尝试了几乎所有解决链接问题LNK1104的解决方案,例如建议here,但没有任何帮助。你有什么想法会有什么问题吗?这是我的测试代码

#define BOOST_TEST_MODULE MyClass test
#include <boost/test/unit_test.hpp>
#include "myclass.h"

BOOST_AUTO_TEST_CASE(Calc_Test)
{
  MyClass* c = new MyClass();
  BOOST_CHECK(c);
}

2 个答案:

答案 0 :(得分:0)

您已启用提升自动关联功能。

使用以下定义禁用此选项:BOOST_ALL_NO_LIB

请参阅here有关该主题的更多信息。

答案 1 :(得分:0)

您使用的--layout=system在构建结果中没有标记的情况下构建。当您使用标题时,不会禁用自动链接功能(通过定义BOOST_ALL_NO_LIB)。之一:

  1. 删除--layout=system选项或
  2. 通过定义BOOST_ALL_NO_LIB并手动将* .lib文件添加到您的链接来停用自动链接。