使用C在Eclipse中“首先定义此处”错误

时间:2013-11-07 19:23:21

标签: c xml eclipse libxml2 multiple-definition-error

我正在尝试使用Eclipse中的libxml2编译C程序。看起来我的代码没有问题,但是在构建项目时会出现错误。

错误输出位于此屏幕截图中:https://drive.google.com/file/d/0BwV-0_2diIaaQlZHM2Fwa2R0LWc/edit

在此错误之前,我有一个“未定义的引用”错误,但这是因为我忘记链接库libxml2。现在这是截图中的问题。我不该做什么。

[EDITED] 我解决了我的问题,我只需要将-nostartfiles放在链接器标志中。

2 个答案:

答案 0 :(得分:0)

我解决了我的问题我只需要在Linker Flags框中编写-nostartfiles:D 要查找“链接标记”框,请转到“您的项目”>属性> C / C ++ Build>设置> GCC C链接器>其它

就是这样。

感谢您的帮助。

答案 1 :(得分:0)

我不认为您的解决方案是可以接受的,我认为当您的项目在其他环境中执行时会导致同样的问题(另一个eclipse配置,从控制台运行它等) 当您在项目中多次定义相同的函数时会发生该错误,我敢打赌,因为您已经定义了与库中已有的相同的函数。

例如,如果我有一个名为hello()的函数的lib1.h,然后在main.c中编写相同的函数(链接了该库),则会出现问题。 事实上,在你的图像中,我可以看到“__data_start的多重定义”

所以我认为你只需要更改有问题的功能名称,它就会被修复。

此外,如果您在程序中多次包含相同的库,则会导致此问题,但可以使用预处理器解决此问题(如果您对此感兴趣,可以使用google,因为它会偏离主题并且让我的答案太长了)