2013-07-08 15 views
6

OpenCVをOSX 10.7.5/MacbookPro 2.5 GHz Intel Core 2 DuoでQTと動作させるように設定しようとしています。私はここでいくつかの関連する質問(How to link opencv in QtCreator and use Qt libraryHow do you set up OpenCV with QT in OSX?)を見たことがありますが、詳細はあまりありません。 QTサイトと私のウェブ検索では、すべての情報がWindowsやLinuxのようです。OSXでQTでOpenCVを設定する


私の設定とコードは以下のとおりです。コードを実行すると、エラーが発生します::-1: error: symbol(s) not found for architecture x86_64

パスが間違っているか、またはx86_32用にopenCVをビルドしている可能性があるため、何も見つかりませんか?後者をチェックする方法はありますか?私は構成とセットアップのプロセスの一部ではあまり精通していません。


アップデート2

コンソール出力は以下の通りです - おそらくエラーは明白ですか?

  • が構築され、ソースからOpenCVの(2.4.6)の最新バージョンをインストールし、それをテストした:;私はこれまで(DR TL)は何

    02:44:38: Running steps for project RP_openCV_01... 
    02:44:38: Configuration unchanged, skipping qmake step. 
    02:44:38: Starting: "/usr/bin/make" 
    clang++ -headerpad_max_install_names -mmacosx-version-min=10.6 -o RP_openCV_01 main.o -L/usr/local/lib -1ibopencv_core.2.4.6,dylib -1ibopencv_imgproc.2.4.6.dylib -F/Users/rise/Qt5.0.2/5.0.2/clang_64/lib -framework QtCore 
    clang: warning: argument unused during compilation: '-1ibopencv_core.2.4.6,dylib' 
    clang: warning: argument unused during compilation: '-1ibopencv_imgproc.2.4.6.dylib' 
    Undefined symbols for architecture x86_64: 
        "cv::_InputArray::_InputArray(cv::Mat const&)", referenced from: 
         _main in main.o 
        "cv::namedWindow(std::string const&, int)", referenced from: 
         _main in main.o 
        "cv::Mat::deallocate()", referenced from: 
         _main in main.o 
        "cv::imread(std::string const&, int)", referenced from: 
         _main in main.o 
        "cv::imshow(std::string const&, cv::_InputArray const&)", referenced from: 
         _main in main.o 
        "cv::waitKey(int)", referenced from: 
         _main in main.o 
        "cv::fastFree(void*)", referenced from: 
         _main in main.o 
    ld: symbol(s) not found for architecture x86_64 
    clang: error: linker command failed with exit code 1 (use -v to see invocation) 
    make: *** [RP_openCV_01] Error 1 
    02:44:38: The process "/usr/bin/make" exited with code 2. 
    Error while building/deploying project RP_openCV_01 (kit: Desktop Qt 5.0.2 clang 64bit) 
    When executing step 'Make' 
    

    いくつかのコマンドラインプログラム。

  • はQTの最新バージョン(5.1)をインストールし、

  • (下記)プロジェクトファイル

QT  += core 
QT  -= gui 

TARGET = RP_openCV_01 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 
SOURCES += main.cpp 

INCLUDEPATH += /usr/local/include\ 
LIBS += -L/usr/local/lib 
    内のパスを指定したなど、すべての例を実行することができています
  • は、以下のプロジェクト設定でパスを指定しようとしました。私は/usr/local/include/usr/local/libを追加

enter image description here

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

int main() { 

    // read an image 
    cv::Mat image= cv::imread("dog.jpg"); 
    // create image window named "My Image" 
    cv::namedWindow("My Image"); 
    // show the image on window 
    cv::imshow("My Image", image); 
    // wait key for 5000 ms 
    cv::waitKey(5000); 

    return 1; 
} 

アップデート1

もう一つは、私はチュートリアルに基づいてみましたmain.cppに、単純なコード例libs iを指定することでしたn QTプロファイル(下の画像のように)。チュートリアルはWindowsのためのものでしたが、OSXが異なるかどうか、どのように違うのか分かりませんでした。 Windowsの例では-1ibopencv_core246dですが、私は分離していてもなくても、 "d"を付けずに試してみました。もちろん、libのフルネームは "libopencv_core.2.4.6.dylib"です。

これらの重要な詳細情報は、常に私を引き上げますが、チュートリアルではこのことがよく分かっています。

LIBS += -L/usr/local/lib \ 
    -1ibopencv_core.2.4.6 \ 
    -1ibopencv_imgproc.2.4.6 \ 
    -1ibopencv_features2d.2.4.6 \ 
    -1ibopencv_highgui.2.4.6 

enter image description here

+0

デフォルトでは、OpenCV 2.4.6はネイティブアーキテクチャ用に構築されています(x86_64である必要があります)。 「実行」と言うと、コードをどのようにして起動しますか? DYLD_LIBRARY__PATHにopencv .dylibファイルへのパスが含まれていないという事実に関連している可能性があります。 – sansuiso

+0

@sansuiso - QTCreatorを使用してビルドして実行しています。私は私の質問に更新を加えて、どのようにlibsをインクルードするのかを説明しようとしました。 –

+0

これは10.8で[this .pro file](https://gist.github.com/bestimmaa/7033447)を使って私のために働いていましたが、10.9で新しいdevマシンを設定して以来、私は同じエラーを受けます。 – Christoph

答えて

6

適切な宣言がある:私はちょうど同じ問題つまずい

LIBS += -L/usr/local/lib \ 
    -lopencv_core \ 
    -lopencv_imgproc \ 
    -lopencv_features2d\ 
    -lopencv_highgui 
+0

Thx!それはosxで働いた10.7.5ライオンとQT 5.2 –

0

私は正常にMacPortsを経由OpenCVの、QtとPyQtは両方をインストールしました。

+0

QT内でopenCVライブラリにリンクするにはどのような設定を使用しますか? –

+0

opencvサンプルは機能しますか?どのようにしてopencvライブラリを指定しましたか? Qtにこれらのパスを含める必要があります。 – wrdeman

0

あなたはここに2つの潜在的な問題に直面している:

  1. 最初のものは、コンパイラ(打ち鳴らすまたはGCC)あなたは同じSTDC++ライブラリにリンクしません(Iによっては、のMacプラットフォームでは、ありますiOSプロジェクトで動作するいくつかの静的なopencvライブラリを取得しようとしている間に、この問題に遭遇しました)。しかし、C++エラーがないのでここではそうではないようですが、それぞれの場合にどのコンパイラを使用するかチェックする価値があります。
  2. 第2のものQtCreatorは、グラフィックアプリケーションです。したがって、あなたの端末セッション設定を認識しません。これには、動的ライブラリへのパスが/usr/localに含まれています。静的なopencvライブラリを使用するか、install_toolを使用して出力バイナリにコード化されたライブラリへのパスを変更するか、QtCreatorの設定を使用してDYLD_LIBRARY_PATH変数を/usr/local/libに設定します。ただ、ナイーブ間違い
1

。ここで私はそれをどのように解決したのですか:

sansuisoすでに提案されているように、問題はリンクしようとしているC++ - STD-libのようです。あなたはおそらくlibC++(LLVM ...)をリンクしようとしていますが、代わりにlibstdC++(GNU C++ ...)を使うべきです。 QtのCreatorの使い方

あなたは.PROファイルに以下を追加することができます

mac: CONFIG += MAC_CONFIG 

MAC_CONFIG { 
    QMAKE_CXXFLAGS = -std=c++11 -stdlib=libstdc++ -mmacosx-version-min=10.7 
    QMAKE_LFLAGS = -std=c++11 -stdlib=libstdc++ -mmacosx-version-min=10.7 
} 

を、この答えは、あなたの問題のために興味深いことができますhttps://stackoverflow.com/a/12852913/1141118

は、この情報がお役に立てば幸い!

+0

ありがとう。私はopenCVを個別に構築し、以下の私の答えで定義にリンクすることができました。 –

+0

'CONFIG + = C++ 11'で十分です。 – CroCo

関連する問題