gpt4 book ai didi

c++ - 对共享库函数的 undefined reference

转载 作者:太空狗 更新时间:2023-10-29 12:08:26 24 4
gpt4 key购买 nike

我在 Linux 中实现了一个共享库并尝试对其进行测试,但我收到错误消息“对 `CEDD(char*)' 的 undefined reference ”。

我使用带有以下参数的 Eclipse:

  • 包含文件的路径(这里是一切都好)
  • 图书馆的路径和它的名字。路径是正确的,并且名字是WISE_C(全名:libWISE_C.so)

我的代码:

我用于测试的测试程序:

#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 描述符.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*)' 的 undefined reference 是编译器或链接器错误?

最佳答案

这是一个链接器错误(虽然我不认为它通常包含 'char*' 位),所以它似乎要么找不到你的库,要么库不包含该函数。后者也可能意味着它确实包含实际功能,但名称不同;确保两个项目都编译为 C 而不是 C++。

编辑:我错过了你的程序是 C++(这也解释了更详细的链接器消息)。在这种情况下,如果库是 C 语言,您应该将 extern "C"(有条件地,因此它仅在使用 C++ 时使用)添加到 CEDD 的声明中。

关于c++ - 对共享库函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com