我正在使用 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.clibfornol.amain()AllTests.cpp
我在这里做错了什么?