Eclipse-CDT/ c++:未定义的引用-错误,尽管正确的.o文件被创建并传递给链接器

Eclipse-CDT/C++: Undefined reference-errors although right .o-files are created and passed to the linker

本文关键字:创建 文件 链接 未定义 c++ 引用 Eclipse-CDT 错误      更新时间:2023-10-16

首先:我不是使用一个已经编译好的库。

情况如下:我在eclipse CDT中有一个c++项目,它的文件夹结构是这样的:

project
  somefoldername
    src
    include
  library
    src
    include

somefoldername/src和library/src被定义为源文件夹,somefoldername/include和library/include被定义为包含文件夹(在C/c++通用->路径和符号下,这也影响编译器的- i选项)。

"library"文件夹包含我自己的代码使用的库的源代码(可以在"somefolder"中找到)。嗯,整个项目的编译工作得很好,但是链接崩溃了,在库的源代码中有一大堆"未定义的引用"错误。

出现未定义的引用错误,尽管*。o文件被创建,其中缺失的函数应该被找到-并且之后也被传递给链接器。

我做错了什么?

Edit:更新到当前配置并尝试解决问题。

Edit2:这个被接受的答案对我有一点帮助,但最大的问题似乎是"一次链接所有东西"——eclipse之后的策略。在将其链接到主应用程序之前,我先进入autoconf并构建了库。虽然要做更多的工作,但这是一种更简洁的方法。

三种可能:

1) "undefined"符号实际上不在你的库中

 This is unlikely, but you can verify using the "nm" Linux command

2)您没有在Eclipse

中正确设置库搜索路径(" -big- l ")
  • 链接eclipse中的静态库

    …还是…

    3)也许你用"C"链接构建库,但你的程序使用c++链接(反之亦然)。如果您正在使用"C" (gcc")编译器,或者有任何"*.c"源文件,那么请确保所有函数在您的.h头文件中都有原型,并且所有原型都适当使用"extern "C":

    ,http://msdn.microsoft.com/en-us/library/0603949d%28v=vs.80%29.aspx