我在Linux中实现了一个共享库,并尝试对其进行测试,但是我收到错误“未定义引用`CEDD(char *)'”。
我在Eclipse中使用以下参数:
我的代码:
我用于测试的测试程序:
#include <iostream>
#include <Descriptor.h>
int main() {
char* path = "/export/home/pdmazubi3/workspace/proj1/src/pic.jpg";
double * cedd = CEDD(path); ///// <-ERROR!
std::cout << "!!!Hello World!!!" << cedd[1];
return 0;
}
Header Descriptor.h:
double* CEDD(char* path);
具有所需功能的Descriptor.c的一部分:
#include "Descriptor.h"
#include "highgui.h"
#include "cv.h"
double* CEDD(char* path)
{
IplImage* srcImg;
IplImage* ImageGrid;
...
}
我在做什么wrog?我在互联网上搜集了很多文章,但我没有找到解决方案。
对`CEDD(char *)'的未定义引用是编译器或链接器错误?
答案 0 :(得分:2)
这是一个链接器错误(虽然我不认为它通常包含'char *'位),所以它似乎无法找到您的库或库不包含该函数。后者也可能意味着它确实包含实际功能,但名称不同;确保两个项目都编译为C而不是C ++。
编辑:我错过了你的程序是C ++(这也解释了更详细的链接器消息)。在这种情况下,如果库在C中,您应该将extern "C"
(有条件地,因此仅在使用C ++时使用)添加到CEDD
的声明。
答案 1 :(得分:1)
您确定在构建时链接了为descriptor.c生成的目标代码吗?