2017-11-09 18 views
1

私はC処理用画像ライブラリを探していて、OpenCVライブラリが最も便利であることを知りました(人のアドバイスに従って)。だから私は、最新バージョンをインストールすることを決めたが、私は私の既存のGTK +(C)プロジェクトに含まれるようにしようとしたとき、それはエラーをコンパイルする私を与えた:OpenCv-3.3.0とGTK + 3の両方をgccでCコードでコンパイルできますか?

undefined reference to cvRound 

正確なメッセージは次のとおりです。だから、

$ gcc ./bin/app.o \ 
    $(pkg-config --libs glib-2.0) \ 
    $(pkg-config --libs pango) \ 
    $(pkg-config --libs gtk+-3.0) \ 
    $(pkg-config --libs gmodule-2.0) \ 
    $(pkg-config --libs opencv) -o bin/app 

./bin/app.o : Dans la fonction « cvPointFrom32f » : 
app.c:(.text+0x557) : référence indéfinie vers « cvRound » 
app.c:(.text+0x56d) : référence indéfinie vers « cvRound » 
./bin/app.o : Dans la fonction « cvReadInt » : 
app.c:(.text+0xe74) : référence indéfinie vers « cvRound » 
./bin/app.o : Dans la fonction « cvEllipseBox » : 
app.c:(.text+0x10dc) : référence indéfinie vers « cvRound » 
app.c:(.text+0x10fe) : référence indéfinie vers « cvRound » 
collect2: error: ld a retourné le statut de sortie 1 
make: *** [Makefile:38: bin/app] Error 1 

OpenCVとGTK +を使用するために私が何をすればよいか知りたいと思っていました。

私はまた++グラムでGCCを削除しようとした(しかし、これはどちらかの問題を解決していません)、今ではコンパイルが、私は使用して自分のアプリケーションを実行しようとすると:

$ ./app 

私は

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported 
を得ました

私はそれはGTK + ...

PSで動作させるためにOpenCVのをインストールするにあきらめていると思う:あなたが何かアドバイスやライブラリrecommandations(C)を持っている場合、私はそれを取ります。

+0

'$(pkg-config --cflags --libs opencv)'で試してみましたか? 'libopencv-dev'はインストールされていますか? (私はそうだと思う) – purplepsycho

答えて

1

あなたのOpenCVバージョンは、GTK + 2を使用して構築されている可能性が高いため、GTK + 3アプリケーションをOpenCVにリンクすると、シンボルが競合します。エラーメッセージに記載されているように、両方のバージョンを同じプロセスで使用することはできません。 GTK + 3サポートを有効にしてOpenCVを再構築するだけです。

ところで、pkg-configを呼び出すときに明示的にすべての依存関係を指定する必要はありません。だから$(pkg-config --libs gtk+-3.0 opencv)で十分です。

+0

GTK + 3でOpenCVを再構築するにはどうすればよいですか?私は実際には考えていないし、私の場合はもっと良いことだと思う。 – rlasvenes

+0

あなた自身のGUIを使用しているので、別のオプションは 'opencv_highgui'ライブラリにリンクしないことです:https://stackoverflow.com/a/45112339/518853 – liberforce

関連する問題