前提・実現したいこと
macOSから実行ファイルを作成したいです。
オブジェクトファイルのビルドにエラーはないのですが、
Linking CXX shared library librunning.dylib
ここの部分で作成した動的ファイルとのリンクに失敗してしまいます。
macOS Big Sur 11.2.2
opencv/4.5.1_3
cmake version 3.19.1
GNU Make 3.81
Apple clang version 11.0.3
発生している問題・エラーメッセージ
Scanning dependencies of target running [ 4%] Building CXX object /"".cpp.o "".cpp:112:8: warning: unused variable 'num' [-Wunused-variable] ......... ......... [ 85%] Building CXX object [ 90%] Linking CXX shared library librunning.dylib Undefined symbols for architecture x86_64: "cv::medianBlur(cv::_InputArray const&, cv::_OutputArray const&, int)", referenced from: aaa(int, char**) in bbb.cpp.o "cv::FileStorage::open(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: ccc(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in ddd.o Parameters(int, char**) in ccc.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]: *** [""/librunning.dylib] Error 1 make[1]: *** [""/CMakeFiles/running.dir/all] Error 2 make: *** [all] Error 2
Cmakeの構成です。
----build
|
| --src
| |--CMakeLists2.txt
| |--*cpp
| |--*h
| |--include
| |--*cpp
| |--*h
| --root
| |--CMakeLists2.txt
| |--main.cpp
|
|--CMakeLists1.txt
makefile
CMakeLists1.txt
cmake_minimum_required(VERSION 3.1) project(test_cmake CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_FLAGS "-DPIC -O3 -Wall") find_package(OpenCV REQUIRED) include_directories( ${OpenCV_INCLUDE_DIRS} ) add_subdirectory(src) add_subdirectory(root)
CMakeLists2.txt
add_executable(run_test main.cpp) target_link_libraries(run_test ${OpenCV_LIBS} running)
CMakeLists3.txt
file(GLOB MY_SOURCE ${PROJECT_SOURCE_DIR}/src/include/*.cpp ${PROJECT_SOURCE_DIR}/src/include/*.h ) add_library(running SHARED aaa.cpp bbb.cpp ccc.cpp ${MY_SOURCE} ) target_include_directories(running PUBLIC ${PROJECT_SOURCE_DIR}/src/include PUBLIC ${PROJECT_SOURCE_DIR}/src ${OpenCV_INCLUDE_DIRS} ${MY_SOURCE} )
とhttps://qiita.com/shohirose/items/45fb49c6b429e8b204ac
などを参照にして構成しました。
わからないこと, 質問
>例えばなのですが、
cv::medianBlur(const Mat& src, Mat& dst, int ksize)のパラメータに
cv::medianBlur(cv::_InputArray const&, cv::_OutputArray const&, int)のような型がゆるい引数を指定することによるエラーは可能性がありますか?
https://qiita.com/fukushima1981/items/d283b3af3e21d94550c4
OpenCVの標準的なデータ入出力の形式は,1.0の時代ではIplImage構造体が,2.0の時つ代ではcv::Matクラスが使われてきました.そして,2.0から3.0への変換期の今では,それらがcv::InputArrayとcv::OutputArrayに代わりつつあります.ここでは,新しい入出力クラスであるInputArrayとOutputArrayを説明します. このInputArrayとOutputArrayは,新しい型というよりも,呼び出す関数の引数にユーザが型を意識しなくても代入できるようにするためのジェネリクスプログラミングの一種です
>warning: unused variable ‘num’ [-Wunused-variable]
がリンクに影響することはありますか?
リンクのエラーなのでソースコードのビルドが関係しているとは思わないのですが、
現状考えられることがこれくらいしかありません。
何かわかることや、ここを見ると原因がわかるなどありましたら教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー