gpt4 book ai didi

c++ - 定义 BOOST_TEST_DYN_LINK 会导致应用程序在 Visual Studio 中崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:07 25 4
gpt4 key购买 nike

在 boost 单元测试文档中,它明确指出您需要定义 BOOST_TEST_DYN_LINK为了与 boost 单元测试库链接。

我正在使用这个基本示例:

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

我已将 boost 添加到我的包含/库路径并且代码编译正常,但是当我使用 Visual Studio 编译 boost 单元测试并尝试运行它们时,我收到以下错误:

The application was unable to start correctly (0xc000003b).

我觉得我只需要指出这条错误消息是多么的模糊和毫无帮助...

出于某种原因,如果我删除 #define BOOST_TEST_DYN_LINK 行,代码将编译并成功运行,但这直接违背了 boost 文档的内容。

为什么会这样?


附加信息:

这是我正在使用的:

boost v1_63_0

enter image description here

最佳答案

我运行你的代码没有任何问题。所以我怀疑你的情况存在构建问题。

我的 boost 是这样构建的(进入 Boost 源目录后):

bootstrap.bat
.\b2.exe toolset=msvc -j 2 --with-test release link=shared stage

然后您需要将 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%

然后我可以毫无问题地成功构建您的测试代码:

cl /EHsc /MD test.cpp
.\test.exe

关于c++ - 定义 BOOST_TEST_DYN_LINK 会导致应用程序在 Visual Studio 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45880224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com