任何人都可以告诉我文件“/usr/include/c++/4.4/exception”与此错误有什么关系。该文件中没有定义主要内容。我不知道如何阅读错误消息。
./libfoo.a(main.o): In function `main':
/usr/include/c++/4.4/exception:62: multiple definition of `main'
interface-wx/App.o:/usr/include/c++/4.4/exception:62: first defined here
collect2: ld returned 1 exit status
非常感谢任何帮助。
答案 0 :(得分:2)
好吧,就像它说的那样。 是'main'的多个定义。检查这两个文件。 main.cpp
和interface-wx/App.cpp
。
答案 1 :(得分:0)
所以我弄清楚发生了什么......以防其他人遇到这个问题。找出代码中重复定义的来源的好方法是使用命令:
nm -l name_of_object_file.o
nm用于打印目标文件的符号表。我将输出传送到文件并搜索main。 -l开关将打印出符号的行号。这让我可以看到其他讨厌的主要定义来自何处。
对于wxWidgets用户:
当我真的希望它使用我的main时,宏IMPLEMENT_APP(App)
正在为App定义一个main。原始代码(我没有写)在App文件的顶部有一个#define IMPLEMENT_WXWIN_MAIN
,正如我之前所说,使用了IMPLEMENT_APP(App)。 wxWidgets 2.8.6一切正常,但是当我尝试使用wxWidgets 2.9.1时,我开始遇到这个问题。
解决方案:
将IMPLEMENT_APP(App)
替换为wxIMPLEMENT_APP_NO_MAIN(App);