質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

750閲覧

【Mac】C++ OpenCV3をインストールしたいのですが「Undefined symbols for architecture x86_64: ・・・」エラーが発生しました。

sensen

総合スコア7

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/09/11 09:51

前提・実現したいこと

C++のOpenCV 3.4.6 をインストール(brewではなく、githubのソースコードから)しようとしましたが、下記のエラーが発生して先に進めません。

インストール手順はこのサイトに記載のままです。

どの時点かと申しますと、

make -j$(sysctl -n hw.physicalcpu)

上のコマンドを打った後に処理が進んでいる途中でエラーが発生しました。

発生している問題・エラーメッセージ

... [ 44%] Built target opencv_sfm [ 44%] Building CXX object modules/stitching/CMakeFiles/opencv_stitching.dir/src/autocalib.cpp.o [ 44%] Linking CXX shared library ../../lib/libopencv_highgui.dylib Undefined symbols for architecture x86_64: "cvGetPropTopmost_COCOA(char const*)", referenced from: _cvGetWindowProperty in window.cpp.o cv::getWindowProperty(cv::String const&, int) in window.cpp.o "cvSetPropTopmost_COCOA(char const*, bool)", referenced from: _cvSetWindowProperty in window.cpp.o cv::setWindowProperty(cv::String const&, int, double) in window.cpp.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[2]: *** [lib/libopencv_highgui.3.4.8.dylib] Error 1 make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [all] Error 2

試したこと

エラーを検索しましたが、これといった解決策は見つかりませんでした。恥ずかしながら、どの部分が直接的なエラーなのか判断できていません。

補足情報(FW/ツールのバージョンなど)

  • macOS: 10.14.6 Mojave

  • Xcode(tools)はインストール済みですが(※IDEはClionを使っています)。

  • Opencvをbrewでインストールしなかった理由は、Opencv_contribも合わせてインストールしたかったのですが、brewではその方法がわからなかったためです。

ご助言をどうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

問題となっているのはこの箇所です。

https://github.com/opencv/opencv/blame/bea2c7545243ba2dabce6badc94dd55894a8e5ca/modules/highgui/src/window.cpp#L172-L183

つまり

C++のOpenCV 3.4.6 をインストール

は嘘だということになります。なぜなら同一箇所の3.4.6を見ると

https://github.com/opencv/opencv/blob/3.4.6/modules/highgui/src/window.cpp#L156-L167

そもそもcvGetPropTopmost_COCOAをは呼ばれていないからです。3.4branchをcheckoutしたのではありませんか?

これはお示しのエラーログの

make[2]: *** [lib/libopencv_highgui.3.4.8.dylib] Error 1

からも明らかです。

というか従ったという説明見に行ったら

git checkout 3.4

してる。この手順書いた人正気か・・・?それbranchだぞ・・・。


さて、話を戻しましてつまり

Added mechanism to set/toggle NORMAL window to TOPMOST window. by AhiyaHiya · Pull Request #14872 · opencv/opencv

がマージされたことによるバグだと思われます。HAVE_COCOAHAVE_QTがあっても定義される一方でcvGetPropTopmost_COCOAの定義がある/src/window_cocoa.mmHAVE_QTがあるとコンパイルされないからです。

https://github.com/opencv/opencv/blob/c024edb9a80ebc2bef788f5946c851eb8a3aa76b/modules/highgui/CMakeLists.txt#L70-L126

elseif(HAVE_COCOA)

cmake

1endif() 2if(HAVE_COCOA)

に書き換えて、cmakeからやり直してみてください。これでだめならとりあえず3.4.7タグをcheckoutしてやり直してみてください。

投稿2019/09/11 15:30

編集2019/09/11 15:53
yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sensen

2019/09/12 04:38

早速ご回答頂きまして、ありがとうございます。 3.4.6を指定したつもりがcheckout3.4としてしまっていたため、ご指摘のように3.4.8の最新verが入ってしまっていたようです。改めて3.4.6でcheckoutし直しましたら当該エラー箇所は通過致しました(が、別の部分でエラーが発生しましたので確認中です)。上記のpullReqの追っかけについては、時間的余裕があれば挑戦したいと思います。お忙しいところ細部までお手間をおかけいたしました。ありがとうございました。
yumetodo

2019/09/15 14:37 編集

暫定対応として https://github.com/opencv/opencv/pull/15518 がmergeされたようなので3.4 branchもビルドできると思います ただCMakeスクリプトを直さないとほんとうの意味で修正できたことにならないので、もし技術力と時間があればコントリビュートチャンスです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問