【发布时间】:2018-12-18 12:05:06
【问题描述】:
我已经用这个命令安装了 OpenCV 4.0.0
brew install hybridgroup/tools/opencv
我正在尝试编译将图像从文件系统加载到cv::Mat 的简单程序。
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/core/ocl.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
int main() {
auto img = cv::imread("/Users/peter/Dektop/source.png");
return 0;
}
我不断收到这个错误
架构 x86_64 的未定义符号:
“cv::imread(std::__cxx11::basic_string, std::allocator > const&, int)",引用自: ccw6DQpj.o ld 中的 _main:未找到架构 x86_64 collect2 的符号:错误:ld 返回 1 个退出状态
我正在使用这个命令进行编译。 GCC 8.2.0。
g++-8 main.cpp -std=c++17 `pkg-config --cflags --libs opencv4`
【问题讨论】:
-
Gcc 更改了
std::string的二进制表示,因为不再允许写入时复制,您确定您拥有的库使用相同的表示吗? -
检查我的最后一个答案是图书馆是否存在。
-
注意:看起来这从 gcc-5 开始发生了变化,你知道 opencv4 库是如何构建的吗? (Gcc4、Gcc5 还是带有 libcxx 的 Clang?)
-
@JVApen 我相信它与 libcxx 有冲突。我在 INSTALL_RECEIPT.json 中找到了这些信息。
-
您确定文件名是
opencv4而不是pkg-config --cflags --libs opencv4.pc的opencv4.pc?
标签: c++ opencv linker linker-errors