【发布时间】:2015-07-15 20:59:20
【问题描述】:
我有一个非常基本的程序来测试 OpenCV 是否有效。
#include <opencv2/opencv.hpp>
int main() {
cv::namedWindow("Window", CV_WINDOW_AUTOSIZE);
cv::VideoCapture video_capture;
video_capture.open(0);
while (true) {
cv::Mat image;
video_capture.read(image);
cv::imshow("Window", image);
if (cv::waitKey(1) == 27) {
break;
}
}
return 0;
}
还有一个像这样找到 OpenCV 的 CMakeLists.txt 文件:
find_package(OpenCV REQUIRED)
...
target_link_libraries(Project ${OpenCV_LIBS})
这适用于使用 OpenCV 2.4.10 和 clang 602.0.49 的 Mac OSX 10.10,但如果我尝试通过在 CMakeLists.txt 中输入 set(CMAKE_CXX_COMPILER /usr/gcc-5.1.0/bin/g++-5.1.0) 来使用 gcc 5.1,则会收到以下错误:
Undefined symbols for architecture x86_64:
"cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
_main in main.cpp.o
"cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)", referenced from:
_main in main.cpp.o
有什么问题,我该如何解决?
【问题讨论】:
-
可能是new ABI。
-
不过我想使用 C++ 11。
-
所以?您是否阅读过他们写的关于新 ABI 的内容以及如何解决包括
std::__cxx11::在内的符号链接失败的问题? -
@DanielFrey 所以我只需要使用 gcc 5.1 重新编译 opencv?
-
没有。只需在包含任何其他标题之前添加
#define _GLIBCXX_USE_CXX11_ABI 0。