由于我删除了一行,c ++无法在linux上编译

时间:2011-04-28 15:10:44

标签: c++

我正在尝试编译有错误行的代码。我删除了那一行,但由于一些幽灵,编译仍然失败:

  

/tmp/ccaWghvE.o:在功能上   show(lipid*)': membrane.cpp:(.text+0xf52): multiple definition of节目(脂质*)”   /tmp/ccQicBxx.o:main.cpp:(.text+0x150):   首先在这里定义collect2:ld   返回1退出状态

我该怎样摆脱它?

由于

解决

我使用了ralu技巧并创建了一个新文件夹并将所有内容复制到其中。 感谢

3 个答案:

答案 0 :(得分:8)

您在show(lipid*)main.cpp中都定义了membrane.cpp。要么在这两个文件中都有相同功能的副本,那么在它们都包含的标题中定义的函数是非内联的。

答案 1 :(得分:1)

它说'多重定义'。你已经多次定义了一些东西。确保你只定义一次!

删除错误所在的行很少能解决问题。这通常只是编译器意识到错误的一点。您需要了解错误消息,并更正整个程序,而不仅仅是该行。

答案 2 :(得分:1)

你有一个双重定义的符号。

可能是您在头文件中定义了show(lipid*)并包含来自多个翻译单元的头文件。要解决此问题,请将其声明为inline或将定义(实际代码)移动到cpp文件,并在头文件中保留声明。