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 ...

もう 1 つの可能性は、dlopen() でライブラリの動的ロードを使用し、dlsym() でシンボルを検索することです。これは、ライブラリの残りのシンボルを非表示にするために機能する場合があります。これらのマンページのオンライン バージョンは次のとおりです: http://linux.die.net/man/3/dlopen

于 2013-08-28T02:52:09.193 に答える