求救!!!linux opencv 静态库 链接问题,哪位大神帮帮我?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求救!!!linux opencv 静态库 链接问题,哪位大神帮帮我?相关的知识,希望对你有一定的参考价值。

在Linux Ubuntu kylin 14,04环境下,编译了opencv3.0静态库、动态库,写例子程序时,动态链接opencv的so库可以用,可链接静态库.a时就不行了,快疯了!错误如下:(只是部分,大概有几百行错误)

opencl_core.cpp:(.text._ZN12_GLOBAL__N_110opencl_fn4ILi30EiP17_cl_command_queuejPKP9_cl_eventPS4_E9switch_fnES2_jS6_S7_+0x1f4):对‘dlopen’未定义的引用
/usr/local/lib/libopencv_core.a(opencl_core.cpp.o):在函数‘(anonymous namespace)::opencl_fn4<82, int, _cl_kernel*, unsigned int, unsigned long, void const*>::switch_fn(_cl_kernel*, unsigned int, unsigned long, void const*)’中:
opencl_core.cpp:(.text._ZN12_GLOBAL__N_110opencl_fn4ILi82EiP10_cl_kerneljmPKvE9switch_fnES2_jmS4_+0x2b):对‘dlsym’未定义的引用
opencl_core.cpp:(.text._ZN12_GLOBAL__N_110opencl_fn4ILi82EiP10_cl_kerneljmPKvE9switch_fnES2_jmS4_+0x125):对‘dlopen’未定义的引用
opencl_core.cpp:(.text._ZN12_GLOBAL__N_110opencl_fn4ILi82EiP10_cl_kerneljmPKvE9switch_fnES2_jmS4_+0x140):对‘dlsym’未定义的引用
opencl_core.cpp:(.text._ZN12_GLOBAL__N_110opencl_fn4ILi82EiP10_cl_kerneljmPKvE9switch_fnES2_jmS4_+0x1f4):对‘dlopen’未定义的引用

参考技术A 这个要链接上libdl.so

静态库,链接到共享库

【中文标题】静态库,链接到共享库【英文标题】:Static library, link to a shared library 【发布时间】:2014-07-14 14:48:50 【问题描述】:

我不熟悉使用 Eclipse 和开发将在 Linux(在 ARM 处理器上)上运行的应用程序。我想使用 OpenCV 库(.so 文件)。 我的应用程序包含一个链接到多个静态库的可执行文件。此链接在 IDE 设置(ARM linux g++ 链接器设置)中配置。 我需要在这些静态库之一中使用 openCV。 openCV 库以 .so 文件的形式包含在 Xilinx Eclipse SDK 中。 是否可以从我的静态库中链接到这些库?我不确定如何设置。显然静态库项目中没有g++链接器设置。 感谢您的帮助。

【问题讨论】:

【参考方案1】:

在 linux 上,静态库实际上只不过是一组目标文件拼凑在一起,因此您无法链接它,但您也不需要链接它。因为静态库根本没有链接。

解决方案是将您的最终可执行文件链接到这两个库。您当然可以在静态库中使用 OpenCV 函数,它只会等待稍后解决。

【讨论】:

以上是关于求救!!!linux opencv 静态库 链接问题,哪位大神帮帮我?的主要内容,如果未能解决你的问题,请参考以下文章

静态库,链接到共享库

linuxopencv生成的静态或动态库怎样在调用的时候不用安装openvcv环境

opencv静态链接库有啥用

opencv静态链接库cmake链接顺序问题

配置使用OpenCV静态链接库

无法链接到 OpenCV (Linux) 的共享库