首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接错误

链接错误
EN

Stack Overflow用户
提问于 2010-10-04 11:57:04
回答 2查看 1.9K关注 0票数 3

我使用的是安卓-opencv(安卓-opencv -- http://code.google.com/p/android-opencv/ -),它是成功建造的,运行起来很有魅力。然后,我尝试使用"cvCanny“来检测面孔,但是链接器报告了一个”未定义引用“错误。

我试了很多东西来解决这个问题,但没能解决。

/home1/apps/c/opencv-android/opencv/obj/local/armeabi-v7a/libobjdetect.a(haar.o):In

cvHaarDetectObjects': /home1/apps/c/opencv-android/opencv/modules/objdetect/src/haar.cpp:1127: undefined reference tocvCanny‘collect2: ld返回1退出状态

编译命令

/home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc

-nostdlib -Wl,-soname,libandroid opencv.so -Wl,-shared,/home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/yuv420sp2rgb.o /home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/gen/android_cv_wrap.o /home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/image_pool.o /Home1/apps/c/opencvandroid/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/gl_code.o /home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/Calibration.o /home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/Processor.o /home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/objs/android-opencv/gen/cvcamera_swig.o -Wl-整体-存档-Wl,-无完整存档的/home1/android-ndk-crystax/build/platforms/android-5/arch-arm/usr/lib/libmissing.a /home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/lib/libstdc++.a /home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/lib/libsupc++.a /home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/libgcc.a /home1/android-ndk-crystax/build/platforms/android-5/arch/usr/lib/libc.so /home1/android-ndk-crystax/build/platforms/android-5/arch-arm/usr/lib/libm.so -Wl,-修复-皮质-A8 -Wl,-未定义的-Wl,-z,noexecstack -L/home1/apps/c/opencv-android/opencv/bin/ndk/local/armeabi-v7a -L/home1/apps/c/opencv-android/opencv/obj/local/armeabi-v7a -Wl,-rpath-link=/home1/apps/c/opencv-android/opencv/obj/local/armeabi-v7a -lfeatures2d -lcalib3d -limgproc -lvideo -lhighgui -lml -llegacy -lcore -lopencv_lapack -lflann -lobjdetect -lzlib -lpng -ljpeg -ljasper -llog -llog-lpng,-rpath-link=/home1/android-ndk-crystax/build/platforms/android-5/arch-arm/usr/lib /home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/lib/libstdc++.a /home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/lib/libsupc++.a /home1/android-ndk-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/libgcc.a -o /home1/apps/c/opencv-android/opencv/android/obj/local/armeabi-v7a/libandroid-opencv.so

当我检查带有"nm“命令的”libimgpro.a“时,它说它有"cvCanny”的符号,但是链接器抱怨.

/home1/apps/c/opencv-android/opencv/obj/local/armeabi-v7a/libimgproc.a

cvCanny

00000000 r ZZ7cvCannyE19_PRETTY_FUNCTION__

00000001 T cvCanny

请给我提示一下这个喜欢的问题.?

EN

回答 2

Stack Overflow用户

发布于 2013-12-05 20:49:53

当使用gcc (或g++)将静态库与依赖项链接时,顺序很重要。

由于objdetect依赖于imgproc,所以它必须是第一个:

代码语言:javascript
复制
libopencv_core.a libopencv_highgui.a libopencv_objdetect.a libopencv_imgproc.a

这是因为GNU链接器按照给定参数的顺序解析依赖项,在继续之前丢弃所有未引用到该点的符号。

找到重新排序库是否能解决您的问题的一种方法是重复所有库,以便在所有其他库之后提供给链接器的每个库列表(再次)。如果这解决了您的链接错误,那么您将遇到一个静态库排序问题。

票数 2
EN

Stack Overflow用户

发布于 2010-10-14 23:19:30

在android项目站点上找到了一个解决方案,该解决方案涉及更改opencv库加载的顺序。

http://code.google.com/p/android-opencv/issues/detail?id=17

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3854982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档