0

让我解释一下我的问题:我编写了一个使用 OpenCV libopencv_core.so 的共享库 libMyLib.so。

当我编写一个使用我的库(libMyLib.so)的应用程序时,我想隐藏 OpenCV 库的使用(即隐式链接),但我做不到。我也必须明确链接到 libopencv_core.so。

我应该怎么办?是否有可能或者我必须将 OpenCV 静态链接到我自己的库才能隐藏它?

我正在使用带有 gcc 4.7.3 和 ld 2.23.2 的 NetBeans 7.3.1。

谢谢你的帮助!

4

1 回答 1

0

应该可以静态链接 OpenCV 库。我认为在加载共享库的进程中完全隐藏 OpenCV 库符号没有什么可做的。以下选项ld应该有效:

ld ... -static -lopencv_core -Bdynamic ...

如果从 调用cc,那么它是这样的:

gcc ... -Wl,-static,-lopencv_core,-Bdynamic ...

另一种可能性是使用 dlopen() 动态加载库并使用 dlsym() 查找符号。这可能会隐藏库的其余符号。这是在线版本的联机帮助页:http: //linux.die.net/man/3/dlopen

于 2013-08-28T02:52:09.193 回答