Clang++ 出现报错:
Undefined symbols for architecture x86_64
[build] "cv::Mat::ones(int, int, int)", referenced from:
[build] _main in test.cpp.o
[build] "cv::Mat::Mat()", referenced from:
[build] _main in test.cpp.o
[build] "cv::Mat::~Mat()", referenced from:
[build] _main in test.cpp.o
[build] ld: symbol(s) not found for architecture x86_64
首先可以明确的是这个报错出现在了link阶段,意思是找不到链接的动态库。
最刚开始以为是安装多个版本的opencv之间软连接出现了问题,后来仔细排查,问题出在CMakeLists.txt关于opencv的配置上。
下面附上,cmake中使用opencv的基本流畅,兼容opencv 3.0 +
find_package(OpenCV REQUIRED)
MESSAGE("OpenCV VERSION:")
MESSAGE(${OpenCV_VERSION})
#添加头文件
include_directories(
${OpenCV_INCLUDE_DIRS}
)
add_executable(AR_MARKER
test.cpp
)
target_link_libraries(AR_MARKER
${OpenCV_LIBS}
)
要注意的是cmake里面的OpenCV,一定要按照如上的格式。否则则不能找对链接库