2011-04-28 28 views
2

我试图编译我的代码,它有一个错误的行。我已经删除了这条线,但仍编译失败,因为一些鬼:由于我删除了一行,C++无法在Linux上编译

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

我怎样才能摆脱呢?

感谢

解决

我已经使用RALU尖端和重新创建文件夹,复制到一切吧。 感谢

+0

没有代码我们什么都做不了。只是删除错误的行是不够的,事实上,这种影响可能是灾难性的。 – orlp 2011-04-28 15:12:55

+0

你用来构建软件的命令是什么? – jolo 2011-04-28 15:13:02

+5

尝试删除所有源 – 2011-04-28 15:13:27

回答

1

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

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

8

您在main.cppmembrane.cpp中都定义了show(lipid*)。要么你在这两个文件中都有相同功能的副本,那么你在函数头中定义了非内联函数。

1

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

想必你在头文件中定义show(lipid*)包括来自多个翻译的单位,头文件。要解决此问题,请声明inline或将定义(实际代码)移至cpp文件,并将声明保留在头文件中。

相关问题