需要帮助解释ld链接器错误

时间:2010-07-22 08:37:45

标签: c++ linker-errors

任何人都可以告诉我文件“/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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

好吧,就像它说的那样。 'main'的多个定义。检查这两个文件。 main.cppinterface-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);