如何修复"未定义的引用"错误 opencv 和 g++
How to fix 'undefined reference' error opencv and g++
我正在尝试在VSCode中构建使用OpenCV的简单程序,已经在堆栈上阅读了数千个帖子,它们都是在Linux上制作的(我尝试在Windows上执行此操作(这是我的代码
这是我尝试使用的:
"args": [
"-g",
"-I",
"C:\OpenCV\opencv\build\include",
"${file}",
"-L",
"C:\OpenCV\opencv\build\x64\vc15\lib",
"-l",
"opencv_world345",
"-o",
"${fileDirname}\${fileBasenameNoExtension}.exe"
],
我检查了几次路径
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
这就是我得到的结果
正在执行任务: C:\MinGW\bin\g++.exe -I C:\OpenCV\opencv\build\include>d:\programowanie\Projekt\Project\main.cpp -L>C:\OpenCV\opencv\build\x64\vc15\lib -l opencv_world345 -o>d:\programowanie\Projekt\Project\main.exe <</p>
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:>C:\Users\xxx\AppData\Local\Temp\ccXtHNOY.o:main.cpp:(.text+0x72(:undefined reference to
cv::imread(cv::String const&, int)' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: >C:UsersxxxAppDataLocalTempccXtHNOY.o:main.cpp:(.text+0xe3): undefined reference to
cv::namedWindow(cv::String const&, int(' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:>C:\Users\xxx\AppData\Local\Temp\ccXtHNOY.o:main.cpp:(.text+0x129(:>未定义引用cv::imshow(cv::String const&, cv::_InputArray const&)' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: >C:UsersxxxAppDataLocalTempccXtHNOY.o:main.cpp:(.text+0x149): >undefined reference to
cv::waitKey(int(' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:>C:\Users\xxx\AppData\Local\Temp\ccXtHNOY.o:main.cpp:(.text$_ZN2cv6StringC1EPKc[__ZN2cv6StringC1EPKc]+0x42(: 未定义对cv::String::allocate(unsigned int)' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: >C:UsersxxxAppDataLocalTempccXtHNOY.o:main.cpp:(.text$_ZN2cv6StringD1Ev[__ZN2cv6StringD1Ev]+0xf): undefined reference to
cv::String::d eallocate((' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:>C:\Users\xxx\AppData\Local\Temp\ccXtHNOY.o:main.cpp:(.text$ZN2cv6StringaSERKS0[__ZN2cv6StringaSERKS0_]+0x1c(: 对cv::String::deallocate()' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: >C:UsersxxxAppDataLocalTempccXtHNOY.o:main.cpp:(.text$_ZN2cv3MatD1Ev[__ZN2cv3MatD1Ev]+0x2d): undefined reference to
cv::fastFree(void*('
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:>C:\Users\xxx\AppData\Local\Temp\ccXtHNOY.o:main.cpp:(.text$_ZN2cv3Mat7releaseEv[__ZN2cv3Mat7releaseEv]+0x40(: 对cv::Mat::deallocate()' c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: >C:UsersxxxAppDataLocalTempccXtHNOY.o:main.cpp:(.text$_ZN2cv3MataSEOS0_[__ZN2cv3MataSEOS0_]+0xb4): undefined reference to
cv::fastFree(void*(' collect2.exe:错误:ld 返回 1 个退出状态
我失去了理智,希望任何人都知道发生了什么
问题是你正在使用Visual Studio二进制文件来表示mingw。如果库是c
库,这可能有效,但不适用于opencv
。以下网站有非官方的 opencv 二进制文件: https://github.com/huihut/OpenCV-MinGW-Build
- OpenCV 3 错误"CV_FOURCC":找不到标识符
- OpenCV 错误:相机校准:断言在matrix_wrap.cpp失败
- 使用 c++ 构建时出现 Opencv 错误
- OpenCV(3.4.1) 错误:断言失败(变暗 <= 2 && step[0] > 0) in cv::Mat::locateROI
- OpenCV 错误:断言失败 - 矩阵减去
- OpenCV 错误:断言在 cv::Mat 行 522 中失败
- OpenCV 错误的解决方案:不支持的格式或格式组合 - 当将 ORB 功能与 FlannBasedMatcher 匹配
- OPENCV.3.0错误:0xc0000005:访问违规读取位置0x00000000
- 在Raspberry Pi上构建时OpenCV错误
- OPENCV错误在XCode 8中加载Fisher面部识别器时
- OpenCV 错误:ERClassifierNM1 中的错误参数
- OpenCV 错误:断言失败(((((sizeof(size_t)<<28)|0x8442211)....957路
- 使用CV :: ML :: STATMODEL :: TRAIN使用KNN的OPENCV错误
- C++ / CannyEdgeDetection.exe 已停止工作 代码块 /OpenCV 错误:断言失败
- OPENCV错误在Ubuntu14.04上编译CAFFE-1.0时
- OPENCV错误:不良的参数(字节必须为16、32或64)在简介Descriptorextractorimpl中
- OPENCV错误:未指定的错误(未实现该函数)
- OpenCV 错误:“MAT”不是“cv”的成员
- 测试构建C++包装器时出现 OpenCV 错误
- 如何修复此 OpenCV 错误:断言失败((无符号)i < (无符号)cn) 在 cv::Vec<unsigned char,3>:::运算符 (), 文件