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

Boost: fatal error LNK1104 when linking a lib named by bjam

本文关键字:LNK1104 致命错误 链接 bjam Boost      更新时间:2023-10-16

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

  bjam --prefix=.vs2012x86static --includedir=.include --build-dir=.buildvs2012x86 --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

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

#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);
}

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

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

您已启用boost自动链接。

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

请参阅此处了解有关该主题的更多信息。