2016-08-26 4 views
0

を見つけることができません、opencv(libopencv-dev version:2.4.9.1 + dfsg-2)と同じバージョンです。しかし、第2のマシン上で、ldはOpenCVののHighGUIシンボルをリンクに失敗:ldは私が正しくプログラムをコンパイルし、マシンで作業して、私は他の同様のマシン上でそれを実行しようとしているOpenCVののHighGUIシンボル(未定義の参照に)

$ g++ $(pkg-config --cflags opencv) SDLTest.c $(pkg-config --libs opencv) -l pthread -L/usr/lib/x86_64-linux-gnu -lSDL 
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -O3 /tmp/ccbTuxi1.o : Dans la fonction « opencv_calibrate(cv::VideoCapture) » : 
SDLTest.c:(.text+0x33d3) : référence indéfinie vers « cv::namedWindow(std::string const&, int) » 
SDLTest.c:(.text+0x3416) : référence indéfinie vers « cv::setMouseCallback(std::string const&, void (*)(int, int, int, int, void*), void*) » 
SDLTest.c:(.text+0x3570) : référence indéfinie vers « cv::imshow(std::string const&, cv::_InputArray const&) » 
SDLTest.c:(.text+0x36e0) : référence indéfinie vers « cv::destroyWindow(std::string const&) » collect2: error: ld returned 
1 exit status 

すべて対応するパッケージがインストールされている(* libopencv-とlibhighgui- *)。 のldconfigは.soのファイル検索します:

$ sudo ldconfig -v 2>/dev/null | grep highgui libopencv_highgui.so.2.4 
-> libopencv_highgui.so.2.4.9 

を、ファイルが存在します。

$ locate libopencv_highgui.so.2.4.9 
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9 

あり、コード全体OpenCVのために多くの参照がありますが、何らかの理由でのHighGUI機能を作成するための唯一の一つですトラブル。

#include <cv.h> 
#include <cvaux.h> 
#include <highgui.h> 

とC++のヘッダーを使用して代わりに何も変更しません:

は私のコードでは、私は(何らかの理由でC++ APIを含むための仕事のために)Cヘッダが含まれています。

私はアイデアの出です。何か案が?

編集:PKG-config設定--libsのOpenCVの 出力:

だから、
/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab 
+0

'のpkg-config設定--libs opencv'の出力は何ですか? *何らかの理由でhighgui関数が問題を引き起こす唯一のものです*多分エラーが多すぎるためにコンパイラが停止した可能性があります。 –

+0

私は、関連するコードを削除した場合、プログラムはコンパイルし、正しく実行されるために述べた機能は、問題であることを確認し、メインpost.I'mへのpkg-config設定--libsのOpenCVの出力を追加しました。 – Perdu

+0

はあなたにそれらの機能はまだあなたが使用しているバージョンに存在してよろしいですか?コンパイルコマンドに '-Wall -Werror'を追加してください。暗黙のうちに宣言された関数について教えてくれますか? –

答えて

0

、私はQTサポートで、自分自身をOpenCVのコンパイルすることによって、これを固定してしまいました。

関連する問題