Dar*_*zer 2 c++ linker gcc program-entry-point multiple-definition-error
我想使用.cpp源文件中的一些函数,该文件在我的.cpp源文件中有一个main函数.(我正在用make和gcc构建.)
这是我的Makefile中的规则:
$(CXX) $(CXXFLAGS) $(INCLUDES) $(SRCS) $(LIBS) -o $@
Run Code Online (Sandbox Code Playgroud)
这是输出(改变一些名称以防止分心):
$ make foo
g++ -g -Wall -m32 -Ilinux/include foo.cpp bar.cpp -o foo
/tmp/ccJvCgT3.o: In function `main':
/home/dspitzer/stuff/bar.cpp:758: multiple definition of `main'
/tmp/ccUBab2r.o:/home/dspitzer/stuff/foo.cpp:68: first defined here
collect2: ld returned 1 exit status
make: *** [foo] Error 1
Run Code Online (Sandbox Code Playgroud)
我如何向gcc表明我想使用foo.cpp中的main?
更新:我应该补充一点,"bar.cpp"是"别人的"代码,并且有自己的主要原因.(听起来我应该与其他人合作让他将共享功能拆分成一个单独的文件.)
你可以做的是将每个main()函数包装在一个#ifdef块中,然后使用命令行来定义将导致使用相关main的符号.
#ifdef USE_MAIN1
int main(void)
{
}
#endif
Run Code Online (Sandbox Code Playgroud)
然后确保gcc命令行添加了类似的内容
-DUSE_MAIN1
Run Code Online (Sandbox Code Playgroud)
或者只是重构您的代码!
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |