我正在使用 CppUTest 测试fornol.c
源文件中定义的 C 代码。该文件定义了主要的生产main()
函数。
我也有一个AllTests.cpp
文件,它也有一个main()
功能,但main()
应该只在运行单元测试时使用。
AllTests.cpp
被编译成.o
文件,而fornol.c
被编译成libfornol.a
档案。
然后 CppUTest 尝试将所有内容链接在一起,但这是我得到的:
Linking fornol_tests
cc -o fornol_tests objs/tests/AllTests.o objs/tests/FornolTests.o lib/libfornol.a ../../CppUTest/lib/libCppUTest.a ../../CppUTest/lib/libCppUTestExt.a -lstdc++ -lgcov
lib/libfornol.a(fornol.o): In function `main':
/home/dlindelof/Work/endor/nol/fornol/fornol.c:453: multiple definition of `main'
objs/tests/AllTests.o:/home/dlindelof/Work/endor/nol/fornol/tests/AllTests.cpp:4: first defined here
collect2: ld returned 1 exit status
看起来好像在存档中main()
定义和存在的函数与在中定义的冲突。但我的理解是,仅当/当尚未引用给定符号时才搜索存档/库文件。因此,如果所有定义都在存档/库文件中,则多次定义相同的符号应该不是问题。fornol.c
libfornol.a
main()
AllTests.cpp
我在这里做错了什么?