【问题标题】:C programming with Eclipse (library mystery)使用 Eclipse 进行 C 编程(库之谜)
【发布时间】:2009-06-12 13:25:57
【问题描述】:

当我将一个库连接到我的程序时,Eclipse 不会生成任何可执行文件,我只得到一个目标文件。 当我断开库与程序的连接(删除所有路径和库函数)时,我得到一个可执行文件。

但是,在第一种情况下我没有收到任何错误。

出了什么问题?

我使用:Linux、C、Eclipse。

日志:

**** 为项目 Wise_test_C 构建配置调试 ****

make all 
Building target: Wise_test_C
Invoking: GCC C Linker
gcc -L"/export/home/pdmazubi3/workspace/WISE_C/Debug" -o"Wise_test_C"  ./src/Wise_test_C.o   -lWISE_C
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGetRawData'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvPow'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCreateGraphScanner'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `sqrt'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvColorToScalar'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `Fuzzy10'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvExp'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvTransform'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvReleaseMat'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvAddS'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvHoughLines2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSetAdd'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvAvgSdv'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvError'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSeqSlice'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `floor'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCircle'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGetCols'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvLoadImage'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvAlloc'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvRead'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvFitLine'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvUndistort2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvLog'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvFree_'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCreateImage'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCalcEMD2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGetElemType'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvPolyLine'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvFitEllipse2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvBoundingRect'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvPerspectiveTransform'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCalcArrHist'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCalibrateCamera2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `Fuzzy24'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvInvert'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvAvg'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSum'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvProjectPoints2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSet'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvFindExtrinsicCameraParams2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvRandArr'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvReshape'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGetSeqElem'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvBoxPoints'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSetImageROI'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvMinAreaRect2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvInitSubdivDelaunay2D'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvFindFundamentalMat'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSet2D'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCvtColor'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvLine'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvReleaseGraphScanner'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvRodrigues2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvKMeans2'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvEllipse'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvInitFont'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvResetImageROI'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGet2D'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCreateMat'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvFindChessboardCorners'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGetFileNodeByName'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvSplit'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCartToPolar'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvGetRows'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvCreateSubdiv2D'
/export/home/pdmazubi3/workspace/WISE_C/Debug/libWISE_C.so: undefined reference to `cvConvexHull2'
collect2: ld returned 1 exit status
make: *** [Wise_test_C] Fehler 1

【问题讨论】:

  • 您需要发布构建日志以便我们为您提供帮助
  • 在哪里可以找到日志文件? eclipse会生成吗?
  • @lerax ...感谢构建输出。查看我的编辑.. 似乎 OpenCV 没有被链接:)

标签: c++ c eclipse shared-libraries


【解决方案1】:

查看日志/构建输出。链接器找不到您指的库,因此编译在对象生成时停止。

编辑

collect2: ld returned 1 exit status

链接器失败

我的猜测...... OpenCV 没有被链接
看起来您的程序也使用 OpenCV。您需要将可执行文件链接到 openCV,以便解析库 libWISE_C.so 中的符号。通过 Eclipse 添加依赖项或手动添加。请记住,您需要包含 opencv 标头,通过“-L”包含库路径并链接库二进制文件。

在 Eclipse 中,右键单击您的项目并转到“属性”。接下来,打开 GCC C++ Linker 下的 Libraries 部分。在库 (-l) 面板中添加一个值为 opencv 的条目,然后单击确定。

祝你好运

【讨论】:

  • 但是我已经在我的库中链接了 OpenCV,并且我没有在我的程序中使用任何来自 OpenCV 的东西。还不够吗?如果只有 libWISE_C.so 需要 OpenCV,我是否需要在我的程序中链接这两个库?
  • 如果您打开终端并在 /export/home/pdmazubi3/workspace/WISE_C/Debug/ 中键入 ldd libWISE_C.so,opencv 会显示在列表中吗?
  • 底线是 opencv 未包含在您的库或程序中,因此出现 ld 错误。使用 ldd 获取每个的输出。
【解决方案2】:

看起来libWISE_C.so 正在使用OpenCV 或类似的库。您必须在可执行文件的链接行上提供该其他库,否则您将无法获得成功的链接。

由于您自己构建了libWISE_C.so,您应该知道所有未定义符号应该来自哪个其他库。

您也可以将这个“其他库”添加到libWISE_C.so 本身的链接行,从而使libWISE_C.so 客户无需这样做。

【讨论】:

  • 嗨,我自己编写了 libWISE_C.so。我只是想测试一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2012-02-06
  • 2010-12-27
相关资源
最近更新 更多