0

私はOpenCV2.4がインストールされているLinux(Ubuntu)を使用しています。Eclipseを使用してopencvプロジェクトを作成しようとしています。プロジェクトをビルドすると、collect2: ld returned 1 exit statusライブラリが見つからないことが原因だと思われるエラーが発生しました。次に、このプロジェクトにライブラリを配置しましたが、すべてのライブラリには、次のような3つの非常によく似た兄弟があります。

libopencv_highgui.so
libopencv_highgui.so.2.4
libopencv_highgui.so.2.4.0

では、どちらをプロジェクトライブラリに追加する必要がありますか?そして、それらの間の違いは何ですか?

よろしくお願いします。

4

2 に答える 2

2

libopencv_highgui.solibopencv_highgui.so.2.4はおそらくへのシンボリックリンクですlibopencv_highgui.so.2.4.0

ライブラリは頻繁にこれを行うため、特定のバージョンに対してリンクする必要のあるソフトウェアは、汎用ライブラリも公開したままにすることができます。

これは主に、プログラムがライブラリのメジャーバージョンまたはマイナーバージョンに対してリンクされる場合に役立ちます。レガシーアプリケーションがバージョン1.2に対してリンクする必要があるかどうかを検討してくださいlibopencv_highguilibopencv_highgui.so正しいバージョンであることが保証されていないため、プログラムはリンクできませんでした。ただし、プログラムはに対してリンクする可能性がありlibopencv_highgui.so.1.2ます。libopencv_highgui.so.1.2はlibopencv_highgui.so.1.2.3へのシンボリックリンクである可能性がありますが、3番目の数字は通常、互換性を損なうことのないマイナーなバグ修正を意味するため、問題ありません。

したがって、これにより、リンクする必要のあるファイルが表示されます。これは本当に異なります。特定のマイナーリビジョンのバグや癖に頼る必要がない限り、2.4.0のものとのリンクは絶対に避けたいと思います。これにより、プログラムは特にバージョン2.4.0に関連付けられます。2.4.1がリリースされたとき(またはディストリビューションのパッケージマネージャーを細流化したとき)、おそらくプログラムを壊すことはありません。

リンクしlibopencv_highgui.soてから2.5がメインライブラリとしてインストールされている場合(そしてlibopencv_highgui.soがlibopencv_highgui.so.2.5.0にリンクしている場合)、2番目の数字は互換性の変更を意味することがあるため、プログラムが正しくリンクされない可能性があります。

つまり、個人的なプロジェクトの場合は、必要なものにリンクするだけです。libopencv_highgui.soは、個人的なものであればおそらく安全です。配布する場合は、コードが適切にリンクするライブラリのバージョンを把握してから、可能な限りあいまいなバージョンを使用してください。たとえば、コードが2.2、2.3、2.4で機能する場合は、先に進んでにリンクする必要がありますlibopencv_highgui.so。特に2.4.0でのみ機能する場合は、とリンクする必要がありますlibopencv_highgui.so.2.4.0。2.4のサブリビジョンで動作する場合は、libopencv_highgui.so.2.4を使用する必要があります。

基本的に、ほとんどの人の設定で適切にリンクすると思われるものを選択する必要があります。

于 2012-05-26T04:51:38.973 に答える
0

私はここでいくつかの間違いを犯したと思います。必要なのはこれらのライブラリですが、プロジェクトライブラリに追加すると。これらの名前を使用する必要があります。質問で述べたライブラリのopencv_highgui場合、Eclipseライブラリの依存関係を追加する必要がありますがlibopencv_highgui.so.2.4将来の使用のために、私はこれらのものをここに書きます。

于 2012-05-26T04:53:58.147 に答える