Eclipse-CDT/ c++:未定义的引用-错误,尽管正确的.o文件被创建并传递给链接器
Eclipse-CDT/C++: Undefined reference-errors although right .o-files are created and passed to the linker
首先:我不是使用一个已经编译好的库。
情况如下:我在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
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- 避免使用 boost::进程间::消息队列创建文件
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 如何在软件代码中使用ofstream创建文件
- 在特定 Unicode 路径中创建文件
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 即使使用 FILE_FLAG_DELETE_ON_CLOSE 属性创建文件,文件也会保留在磁盘上
- C++ 为每个结构{人}条目创建文件
- "Access is Denied" U盘上的创建文件()
- 在c++编程中的文件夹中创建文件
- 创建文件夹结构
- 在C++中创建文件夹
- 创建文件函数是否可以打开仅在WinObj实用程序中的全局目录下列出的设备的句柄?
- 使用 C++ 或 SDL 在 Android 中创建文件
- 如何检测哪些进程更改,重命名或创建文件?
- 如何在 Linux 中通过 C/C++ 以其他用户身份创建文件?
- 挂钩创建文件抛出异常:读取访问冲突
- UWP 创建文件2 ERROR_ACCESS_DENIED "NUL"
- 如何指定创建文件函数获取未缓存的结果?
- Open() 用于创建文件和打开现有文件.有人能分辨出其中的区别