c++ - Opencv 静态链接给出错误

标签 c++ c opencv

最近我将 opencv 构建为静态库(通过使用 BUILD_SHARED_LIBS=OFF),而动态库已经存在,但位于不同的位置。当我构建可能的程序时,我遇到了很多错误。我正在使用命令行编译代码,如下所示。

g++ -static -I$(OpenCV_Static_Build)/include/opencv -L$(OpenCV_Static_Build)/lib/ -g -o binary  main.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy

错误看起来像,

grfmt_tiff.cpp:(.text._ZN2cv11TiffEncoder12writeLibTiffERKNS_3MatERKSt6vectorIiSaIiEE+0x167): undefined reference to `TIFFSetField'
window_gtk.cpp:(.text.cvNamedWindow+0x29d): undefined reference to `g_type_check_instance_cast'
/usr/lib/gcc/i486-linux-gnu/4.4.3/libgcc_eh.a(unwind-dw2.o): In function `uw_init_context_1':
(.text+0x22f8): undefined reference to `pthread_once'

最佳答案

这些错误不是来自 OpenCV(从函数名称可以看出),而是来自 GLib 和 libpthread。使用 -lglib-2.0 -lpthread 链接器标志。

关于c++ - Opencv 静态链接给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851678/

相关文章:

c++ - OpenCV 与 QT 的集成

c++ - OpenCV 均值 : N>=K exception , 错误 (-215)

c++ - 从链表顺利打印节点

c++ - 别名模板的部分特化

c - printf 函数打印不应该打印的内容,为什么?

c - 在用户不退出的情况下,在 C 中查找两个数字的总和、差等

c++ - 为什么 Qt 资源在 Linux 而不是 Windows 中加载?

c++ - ctime std::命名空间冲突

c++ - FFmpeg 库 : Exactly constant segment duration for HLS

c++ - 在 C++ 中绘图