0

在我得到答案之前:“将您要测试的代码移动到另一个 .cpp 文件”我不能这样做。我曾尝试使用预处理器#if TESTING_SUITE ... #endif,但这不起作用,我仍然得到:

'main' 的多重定义

我编译我的代码,如:

g++ -lmxml -lccpunit -o pic pic.cpp wmcc.cp test.cpp

我有一个主要在 pic.cpp 和另一个在 test.cpp。有没有解决的办法?

更新

在我的 test.cpp 中:

#define TESTING_SUITE_1

在我的 pic.cpp 中:

#ifndef TESTING_SUITE_1
    int main(...
#endif

不工作

4

2 回答 2

2

您可以为链接器指定另一个入口点。对于代码中的 MS cl.exe:(对不起,我没有看到你使用 gcc)

#pragma comment(linker, "/entry:alternative_main")

或通过项目属性页:

Configuration Properties >
  Linker >
    Advanced >
      Entry Point

或直接在命令行:

/entry:alternative_main

对于 gcc,它是以下命令行开关:

-Wl,-ealternative_main

对于其他编译器,请参阅手册。

于 2013-07-25T20:52:49.033 回答
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
于 2013-07-25T20:54:24.550 回答