我已经开始学习如何使用Catch2来测试我的C++代码,并试图设置一个简单的测试。
我的文件夹结构由三个文件组成,都在同一个文件夹中:
catch.cpp //this is the catch_amalgamated.cpp file from GitHub
catch.hpp //this is the catch_amalgamated.hpp file from GitHub
test.cpp //this is my test file
字符串
我在test.cpp
中写的是:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
型
当我试图编译test.cpp
时,我得到了以下错误,我认为这表明没有找到main()
函数(?):
C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e): undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status
型
当我添加一个名义上的main()
函数时,该文件编译成功,但据我所知,#define CATCH_CONFIG_MAIN
应该为您创建main()
函数,因此某些东西显然不起作用。
有人能解释一下吗?
2条答案
按热度按时间0sgqnhkj1#
这个错误的发生是因为google默认的分支是catch2的开发分支,所以我使用的是版本3的文件和版本2的文档(因为它还没有更新)。一旦我下载了v.2文件,一切都开始正常工作。
e0uiprwp2#
如果您想继续使用catch2 v3,则必须链接Catch2WithMain而不是Catch2
大概是这样
字符串
来源https://github.com/catchorg/Catch2/blob/devel/docs/migrate-v2-to-v3.md