我正在尝试编译有错误行的代码。我删除了那一行,但由于一些幽灵,编译仍然失败:
/tmp/ccaWghvE.o:在功能上
show(lipid*)': membrane.cpp:(.text+0xf52): multiple definition of
节目(脂质*)” /tmp/ccQicBxx.o:main.cpp:(.text+0x150): 首先在这里定义collect2:ld 返回1退出状态
我该怎样摆脱它?
由于
解决
我使用了ralu技巧并创建了一个新文件夹并将所有内容复制到其中。 感谢
答案 0 :(得分:8)
您在show(lipid*)
和main.cpp
中都定义了membrane.cpp
。要么在或这两个文件中都有相同功能的副本,那么在它们都包含的标题中定义的函数是非内联的。
答案 1 :(得分:1)
它说'多重定义'。你已经多次定义了一些东西。确保你只定义一次!
删除错误所在的行很少能解决问题。这通常只是编译器意识到错误的一点。您需要了解错误消息,并更正整个程序,而不仅仅是该行。
答案 2 :(得分:1)
你有一个双重定义的符号。
可能是您在头文件中定义了show(lipid*)
并包含来自多个翻译单元的头文件。要解决此问题,请将其声明为inline
或将定义(实际代码)移动到cpp
文件,并在头文件中保留声明。