在我得到答案之前:“将您要测试的代码移动到另一个.cpp文件”我不能这样做。我曾尝试使用预处理器#if TESTING_SUITE ... #endif
,但这不起作用,我仍然得到:
“main”的多重定义
我编译代码如下:
g++ -lmxml -lccpunit -o pic pic.cpp wmcc.cp test.cpp
我在pic.cpp中有一个main,在test.cpp中有另一个。有办法解决这个问题吗?
更新
在我的test.cpp中:
#define TESTING_SUITE_1
在我的pic.cpp中:
#ifndef TESTING_SUITE_1
int main(...
#endif
不工作
答案 0 :(得分:2)
您可以为链接器指定另一个入口点。 对于MS cl.exe,代码为:(抱歉,我没有看到你使用gcc)
#pragma comment(linker, "/entry:alternative_main")
或通过项目属性页:
Configuration Properties >
Linker >
Advanced >
Entry Point
或直接在命令行:
/entry:alternative_main
对于gcc,它是以下命令行开关:
-Wl,-ealternative_main
对于其他编译器,请参阅手册。
答案 1 :(得分:0)
您可以通过编译为
来实现g++ -Dmain=main_pic_moved -c pic.cpp
g++ -Dmain=main_wmcc_moved -c wmcc.cp
g++ -lmxml -lccpunit -o pic pic.o wmcc.o test.cpp