我尝试在使用octave- c++ -API的地方对我的c++代码进行单元测试。如果我在boost单元测试中使用任何来自octave的内容,我会得到错误:
Segmentation fault (core dumped)
编译工作得很好,如果分别使用octave和boost,它工作得很好。有人知道我做错了什么吗?
下面是我的最小示例:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE boostOctaveTest
#include <boost/test/unit_test.hpp>
#include <octave/oct.h>
BOOST_AUTO_TEST_SUITE(TestOctave)
BOOST_AUTO_TEST_CASE(octave)
{
octave_value var = 42;
BOOST_CHECK(var.int_value() == 42ul);
}
BOOST_AUTO_TEST_SUITE_END()
编译命令:
mkoctfile --link-stand-alone -D_GLIBCXX_ASSERTIONS main.cpp -o main -I/home/jlammering/tools/Boost/boost_1_72_0 -L"/home/jlammering/tools/Boost/boost_1_72_0/stage/lib" -l"boost_unit_test_framework"
我软件:
- OS: CentOS 8
- Boost: version 1_72
- Octave: version 5.2
解决方案是切换到不同的软件版本。有了这样的设置,它就可以工作了:
- OS: ubuntu 2204
- Boost: version 1_74
- 音阶:版本6.4