MacOS c++でopenCVが実行できない
以下のtest.cppファイルを
#include <opencv2/opencv.hpp>
int main(){
cv::Mat a = cv::imread("test.jpg", 1);
cv::imshow("hello", a);
cv::waitKey();
}
次のように実行したところ、
c++ -std=c++14 test.cpp -I/usr/local/Cellar/opencv/4.0.1/include/opencv4
次のようなエラーが出て実行できませんでした。
Undefined symbols for architecture x86_64:
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in test-4fd227.o
"cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in test-4fd227.o
"cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)", referenced from:
_main in test-4fd227.o
"cv::waitKey(int)", referenced from:
_main in test-4fd227.o
"cv::fastFree(void*)", referenced from:
cv::Mat::~Mat() in test-4fd227.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
/usr/local/Cellar/opencv/4.0.1/include/opencv4
にはopencv2フォルダがあり、中にはopencv.hppを含んだ大量のhppファイルがあるので、おそらくopenCVの本体だと思っています。
どうすれば動くようになりますか?
環境
macOS Mojave 10.14.2
通常のc++コードはコンパイル&実行できる。
brew経由でインストール
2019 3/29 0:20追記
/usr/local/Cellar/opencv/4.0.1/lib
にはlibade.aとかlibopencv_aruco.4.0.1.dylibといった名前のファイルがありますが、この場所がライブラリパスでしょうか?c++ -std=c++14 test.cpp -I/usr/local/Cellar/opencv/4.0.1/include/opencv4 -I/usr/local/Cellar/opencv/4.0.1/include/opencv4/opencv2 -L/usr/local/Cellar/opencv/4.0.1/lib
を実行しても同じエラーが出てしまいます…
2019 4/4 14:33追記
/usr/local/Cellar/opencv/4.0.1/lib/pkgconfig
というフォルダがあり、中にopencv4.pc
だけ入っている。
2019 4/6 20:42追記
- 以下の手順で解決に至った。
- 環境変数
PKG_CONFIG_PATH
が作られてなかったので、~/.bash_profile
にexportPKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
を追加。