加载共享库时出现 C++ 错误:libopencv_ximgproc.so.4.4
C++ error while loading shared libraries: libopencv_ximgproc.so.4.4
我最近用一些贡献的模块构建了 OpenCV 4.4,但我不能从 C++ 调用它们。
我做了什么
来自 make install
输出:
...
-- Installing: /usr/local/lib/libopencv_ximgproc.so.4.4
-- Set runtime path of "/usr/local/lib/libopencv_ximgproc.so.4.4.0" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_ximgproc.so
-- Installing: /usr/local/include/opencv4/opencv2/ximgproc.hpp
---
当我ls
检查文件是否存在时:
ls /usr/local/lib/libopencv_ximgproc.so.4.4
> /usr/local/lib/libopencv_ximgproc.so.4.4
但是当我在 g++
中编译我的代码时:
OBJS=frame_extractor.o
BIN=g++ frame_extraction.cpp
CFLAGS+=-Wfatal-errors
LDFLAGS+=-L/opt/vc/lib/ -lpthread
LDFLAGS+=-L/usr/local/lib/ -lopencv_ximgproc
LDFLAGS+=`pkg-config --cflags --libs opencv4`
$(BIN) $(CFLAGS) $(LDFLAGS) $(RPATH) $(INCLUDES) -o $(OBJS)
并编译我的程序,其中包括以下内容:
#include "opencv2/opencv.hpp"
#include "opencv2/ximgproc.hpp"
我得到标题中的错误。
问题
为什么我不能抢到这个图书馆?我可以检查的符号链接有什么有趣的事情吗?我是否漏掉了一些明显的东西?
我试过的
g++
中的显式路径
我试图将 rpath
添加到我的 Makefile
,但这没有帮助。
RPATH+=-Wl,-rpath=/usr/local/lib/libopencv_ximgproc.so.4.4
- 令人困惑的图书馆名称
我还检查了代码调用的是 ximgproc
而不是 imgproc
,一个类似的标题 header。
- 检查库是否有内容
运行:
cat /usr/local/lib/libopencv_ximgproc.so.4.4
将通常的 gobbledygook 输出到人们可能期望从二进制文件中得到的终端。
一夜好眠后,我发现安装库后我没有运行 ldconfig
。我 运行 那个,OP 中的问题就消失了。
我最近用一些贡献的模块构建了 OpenCV 4.4,但我不能从 C++ 调用它们。
我做了什么
来自 make install
输出:
...
-- Installing: /usr/local/lib/libopencv_ximgproc.so.4.4
-- Set runtime path of "/usr/local/lib/libopencv_ximgproc.so.4.4.0" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_ximgproc.so
-- Installing: /usr/local/include/opencv4/opencv2/ximgproc.hpp
---
当我ls
检查文件是否存在时:
ls /usr/local/lib/libopencv_ximgproc.so.4.4
> /usr/local/lib/libopencv_ximgproc.so.4.4
但是当我在 g++
中编译我的代码时:
OBJS=frame_extractor.o
BIN=g++ frame_extraction.cpp
CFLAGS+=-Wfatal-errors
LDFLAGS+=-L/opt/vc/lib/ -lpthread
LDFLAGS+=-L/usr/local/lib/ -lopencv_ximgproc
LDFLAGS+=`pkg-config --cflags --libs opencv4`
$(BIN) $(CFLAGS) $(LDFLAGS) $(RPATH) $(INCLUDES) -o $(OBJS)
并编译我的程序,其中包括以下内容:
#include "opencv2/opencv.hpp"
#include "opencv2/ximgproc.hpp"
我得到标题中的错误。
问题
为什么我不能抢到这个图书馆?我可以检查的符号链接有什么有趣的事情吗?我是否漏掉了一些明显的东西?
我试过的
g++
中的显式路径
我试图将 rpath
添加到我的 Makefile
,但这没有帮助。
RPATH+=-Wl,-rpath=/usr/local/lib/libopencv_ximgproc.so.4.4
- 令人困惑的图书馆名称
我还检查了代码调用的是 ximgproc
而不是 imgproc
,一个类似的标题 header。
- 检查库是否有内容
运行:
cat /usr/local/lib/libopencv_ximgproc.so.4.4
将通常的 gobbledygook 输出到人们可能期望从二进制文件中得到的终端。
一夜好眠后,我发现安装库后我没有运行 ldconfig
。我 运行 那个,OP 中的问题就消失了。