tjw*_*992 5 c++ boost dynamic-linking boost-test visual-studio-2015
在增强单元测试文档中,它明确指出您需要定义BOOST_TEST_DYN_LINK以便与增强单元测试库链接.
我正在使用这个基本的例子:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE test_module1
// This header is for the dynamic library, not the header only one
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(test1) {
BOOST_CHECK(true);
}
Run Code Online (Sandbox Code Playgroud)
我已经为我的include/library路径添加了boost并且代码编译得很好,但是当我使用Visual Studio编译boost单元测试并尝试运行它们时,我收到以下错误:
应用程序无法正确启动(0xc000003b).
我觉得我只需要指出这个错误信息是多么含糊和没有帮助......
出于某种原因,如果我删除该行#define BOOST_TEST_DYN_LINK
代码将编译并成功运行,但这直接违反了boost文档所说的内容.
为什么会这样?
附加信息:
这就是我正在使用的:
提升v1_63_0
我运行你的代码没有任何问题。所以我怀疑你的情况存在构建问题。
我的 boost 是这样构建的(进入 Boost 源目录后):
bootstrap.bat
.\b2.exe toolset=msvc -j 2 --with-test release link=shared stage
Run Code Online (Sandbox Code Playgroud)
然后,您需要将 stage\lib 下的 DLL 复制到路径中的某个位置,并将适当的 Boost 目录添加到您的环境中。对于我的命令行环境,我有(假设您已经做了类似的事情set BOOST_ROOT=C:\src\boost_1_65_1
):
set INCLUDE=%BOOST_ROOT%;%INCLUDE%
set LIB=%BOOST_ROOT%\stage\lib;%LIB%
Run Code Online (Sandbox Code Playgroud)
然后我就可以毫无问题地成功构建您的测试代码:
cl /EHsc /MD test.cpp
.\test.exe
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
525 次 |
最近记录: |