2010-12-16 12 views
3

私はプロジェクトのために(http://opencv.willowgarage.com/documentation/cpp/qt_new_functions.html#index-1384を参照)のOpenCV 2.2の新しいQtの機能を使用しようとしてきたが、私はエラーを取得しておいてください。OpenCVの2.2 createButton LNK 2019エラー2010

1> main.cpp 1>main.obj : error LNK2019: unresolved external symbol "void __cdecl cv::displayStatusBar(class std::basic_string,class std::allocator > const &,class std::basic_string,class std::allocator > const &,int)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) referenced in function _main 1>C:\Documents and Settings\Orange\my documents\visual studio 2010\Projects\FYP\FYP.exe : fatal error LNK1120: 1 unresolved externals

私は」 Visual Studio 2010、windows xp、qt 4.7.1、およびopenCV 2.2を使用しています。
プロジェクトの設定で、プロパティ>リンカ>入力のopenCVとqtの両方のコアlibファイルをすでに追加しました。私は、displayStatusBar(...)やcreateButton(...)のような新しいQt関数を使用しようとした時以外は何の問題もなく、openCVコードのコンパイルと実行を試みました。私は数日間の解決策を探していましたが、openCV2.2が最近リリースされただけなので、まだ見つけられませんでした。誰もがこの問題を試して遭遇し、解決策を持っていますか?

Btw openCVのMatデータタイプとQtのQImageの間の変換を避けたいので、qtの代わりに単純なウィンドウとボタンを作成するためにopenCVが提供する関数を使用したい理由があります。すべての回答に事前に

感謝。

付属コード:

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

using namespace cv; 

int main() 
{ 
    namedWindow("Test", CV_WINDOW_AUTOSIZE);    
    // ... 
    // Code links without problem when the following line is commented out. 
    displayStatusBar("Test", "Hello World", 5000); 

    return 0; 
} 

答えて

8

私はので、私は、私は同じ問題を経験していることが他人の利益のために、ここで答えを投稿すべきだと思う問題を見つけました。

基本的にはデフォルトでOpenCVの2.2のために提供バイナリはQtの新機能が含まれていません。これを有効にするには、OpenCvソースをダウンロードし、CMakeを使用してQtの新しい関数を含むメークファイルとソースを生成し、ソースを最初からコンパイルする必要があります。ここで

は大体行うための手順です。

  1. まず、ここからSDKを使用してQTをインストール: http://qt.nokia.com/downloads/。注:コンパイラがそれらを見つけるために、QTライブラリとヘッダファイルをシステムパスとリンカパスに追加する必要があります。単にダウンロードしてインストールするのではありません。ウィンドウの場合は、http://developer.qt.nokia.com/doc/qt-4.8/install-win.htmlを参照して環境変数を追加する方法を確認してください。 Qakeを検出して適切なファイルを生成するには、CMake用にそれらを設定する必要があります。 Linuxユーザーの場合:http://blog.sudobits.com/2010/06/30/how-to-install-qt-on-ubuntu-10-04/
  2. ここからCMakeをダウンロードしてインストールしてください: http://cmake.org/cmake/resources/software.html
  3. ダウンロードはこちらからお使いのOS用のOpenCVのソースコード: http://opencv.willowgarage.com/wiki/
  4. 今すぐにCMakeのGUIを実行し、OpenCVのソースを抽出している フォルダを選択するためにそれを使用。 Unix Makefiles、Visual Studioソリューション、XCode など のOSの種類を選択してください。
  5. オプション一覧が表示されます。 QT のオプションと、OpenGLを使ったQTがあります。最初のものを選択し、必要に応じてOpenGL でそれを選択します。次に、 "configure"ボタンをクリックし、 CMakeの "generate"ボタンをクリックします。必要なプロジェクトファイルが生成されます。
  6. 作成したプロジェクトのタイプ(Unix Makefiles、Visual Studioプロジェクト など)によっては、 CMakeによって生成されたフォルダに移動してプロジェクトをコンパイルできます。例えば、Visual Studioソリューションを生成する にCMakeを選択した場合、Visual Studio ソリューションファイルがフォルダにあります。それを開き、[すべてビルド]を選択します。 がUnix Makefilesを選択した場合は、コマンドラインで "make"を呼び出し、続いて "sudo make install"を実行してください。
  7. /libフォルダのライブラリと/ includeフォルダの ファイルが必要です。 を置くには、この2つのフォルダをコピーしてください。例えば、 Ubuntuでは、 "sudo make install"と入力した後、自動的に/ usr/local/lib と/ usr/local/includeにコピーされます。 Windowsの場合、CMakeで指定した フォルダにあります。
  8. プロジェクトをリンクするには、 リンカーにlibの場所を教えて、 ファイルを含める必要があります。 OpenCV バイナリをダウンロードしたときと同じように指定します。

それはそれです。 QTでOpenCVが動作するはずです。

最初からコンパイルする方法に関する説明は、OpenCvのWebページ(http://opencv.willowgarage.com/wiki/InstallGuide)にあります。

+0

これを共有いただきありがとうございます! – Sharpie

+0

本当に便利です...同じ場所にこだわってました – sg88

+0

私は同じエラーがありますが、関数createTrackbarは機能します。それもあなたのために働いたのですか?覚えていますか?ありがとう! – mrcaramori

関連する問題