gpt4 book ai didi

c++ - Boost::Test:编译并运行一个 "hello world"程序

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

我正在尝试运行一个虚拟的 Boost.test“hello world”程序。我找到了文档 herethere但显然我缺少了一些东西......

这是我所做的:

第 1 步:我安装了依赖项

sudo aptitude install libboost-test-dev

它安装头文件 (libboost-test1.54-dev) 和二进制文件 (libboost-test1.54.0)。

第二步:创建要编译的源文件

我有一个名为 test.cpp 的文件,其中包含:

#define BOOST_TEST_MODULE const_string test
#include <boost/test/unit_test.hpp>

// EOF

正如 official tutorial 中所推荐的那样

第三步:编译

我通过调用编译我的代码:

g++ test.cpp -lboost_unit_test_framework

official tutorial 以来,我不是 100% 确定链接库的选项。没有明确提及。然而,它似乎与我在 /usr/lib 中的库文件名相匹配。另外,链接器不会提示找不到共享对象或静态库文件。

返回以下错误:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

问题

我非常同意链接器的观点:我在我的代码中没有看到任何 main() 函数……但是我应该在哪里以及如何实现它?

我很惊讶,因为我原以为必须创建一个定义函数 main()runner.cpp 文件,但官方 boost tutorial没有提到这样的事情......

answer建议定义BOOST_TEST_NO_MAIN宏,但是官方的boost教程也没有提及。这是正确的做法吗?

有人可以给我清晰的分步说明,说明如何编译我的虚拟“hello world”项目吗?

最佳答案

您可能需要在 Boost.Test 包含之前添加 #define BOOST_TEST_DYN_LINK

检查 here - 如果库是动态构建的(在许多 Linux 发行版中通常如此),则需要此宏。它使头文件定义 int main() - 静态链接 main 定义在静态库中,但动态链接要求 main 位于程序的“静态”部分。所以这个宏将使 boost header ‘inject’ main 到你的 cpp 文件中,编译后它将在那里。

关于c++ - Boost::Test:编译并运行一个 "hello world"程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143345/

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