使用 OpenCV 和 caff 编译时对"g_mutex_lock"的未定义引用

Undefined reference to `g_mutex_lock' when compiling with OpenCV and caffe

本文关键字:lock mutex 未定义 引用 OpenCV 编译 caff 使用      更新时间:2023-10-16

当我编译使用 OpenCV 和 caffe 的代码时,出现以下链接器错误:

../libs/libopencv_highgui.so: undefined reference to `g_mutex_lock'
../libs/libgstbase-0.10.so.0: undefined reference to `g_cond_init'
../libs/libopencv_highgui.so: undefined reference to `g_mutex_unlock'
../libs/libopencv_highgui.so: undefined reference to `g_cond_broadcast'
../libs/libgstreamer-0.10.so.0: undefined reference to `g_cond_wait_until'
../libs/libopencv_highgui.so: undefined reference to `g_mutex_new'
...
collect2: ld returned 1 exit status

这是我的g +通讯:

 g++ -DCPU_ONLY=1 test.cpp -o test -I../include -I../include/openblas -L../libs 
 -Wl,-rpath=../libs -lcaffe -lglog -lboost_system -lopencv_core -lopencv_highgui 
 -lopencv_imgproc

我错过了什么?

是的,这是一个不链接到 glib 的简单情况。

一般来说,要解决这类问题,谷歌其中一个符号名称(例如g_mutex_lock(来找出它来自哪个库。在这种情况下,它是glib。然后,在他们的文档中查找有关编译使用其库的应用程序的帮助(如果您自己无法弄清楚(。在这种情况下,你最终会在这里。

确保安装了所有必需的包后,可以根据需要扩充编译器选项。

在您的情况下,请尝试g++ -DCPU_ONLY=1 test.cpp -o test `pkg-config --cflags glib-2.0` -I../include -I../include/openblas `pkconfig --libs glib-2.0` -L../libs -Wl,-rpath=../libs -lcaffe -lglog -lboost_system -lopencv_core -lopencv_highgui -lopencv_imgproc

请注意 pkg 配置的使用。作为参考,编译仅使用 glib 的示例应用程序可能如下所示: gcc hello.c `pkg-config --cflags --libs glib-2.0`