【问题标题】:OpenCv undefined reference to `cv::OpenCv 未定义对 `cv:: 的引用
【发布时间】:2014-10-07 13:43:33
【问题描述】:

我是 OpenCv 的新手。我正在使用 Eclipse C/C++。当我尝试运行此示例代码时,我遇到了这些错误。我应该怎么做才能解决这个问题?配置有问题吗?

#using namespace std;
#using namespace cv;

    int main( int argc, const char** argv )
    {
         Mat img = imread("MyPic.JPG", CV_LOAD_IMAGE_UNCHANGED); 
         if (img.empty()) //check whether the image is loaded or not
         {
              cout << "Error : Image cannot be loaded..!!" << endl;
              //system("pause"); //wait for a key press
              return -1;
         }
         namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); //create a window with the name "MyWindow"
         imshow("MyWindow", img); /
         waitKey(0); //wait infinite time for a keypress
         destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow"

         return 0;
    }


16:11:28 **** Incremental Build of configuration Debug for project OpenCv ****
Info: Internal Builder is used for build
g++ "-IC:\\opencv\\build\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\OpenCv.o" "..\\src\\OpenCv.cpp" 
g++ "-LC:\\opencv\\build\\x86\\vc12\\lib" -o OpenCv.exe "src\\OpenCv.o" -lopencv_calib3d249 -lopencv_contrib249 -lopencv_core249 -lopencv_features2d249 -lopencv_flann249 -lopencv_gpu249 -lopencv_highgui249 -lopencv_imgproc249 -lopencv_legacy249 -lopencv_ml249 -lopencv_nonfree249 -lopencv_objdetect249 -lopencv_ocl249 -lopencv_photo249 -lopencv_stitching249 -lopencv_superres249 -lopencv_ts249 -lopencv_video249 -lopencv_videostab249 
src\OpenCv.o: In function `main':
C:\Users\ayberk101\workspace\OpenCv\Debug/../src/OpenCv.cpp:10: undefined reference to `cv::imread(std::string const&, int)'
C:\Users\ayberk101\workspace\OpenCv\Debug/../src/OpenCv.cpp:19: undefined reference to `cv::namedWindow(std::string const&, int)'
C:\Users\ayberk101\workspace\OpenCv\Debug/../src/OpenCv.cpp:20: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
C:\Users\ayberk101\workspace\OpenCv\Debug/../src/OpenCv.cpp:20: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
C:\Users\ayberk101\workspace\OpenCv\Debug/../src/OpenCv.cpp:22: undefined reference to `cv::waitKey(int)'
C:\Users\ayberk101\workspace\OpenCv\Debug/../src/OpenCv.cpp:24: undefined reference to `cv::destroyWindow(std::string const&)'
src\OpenCv.o: In function `ZN2cv3MatD1Ev':
C:/opencv/build/include/opencv2/core/mat.hpp:278: undefined reference to `cv::fastFree(void*)'
src\OpenCv.o: In function `ZN2cv3Mat7releaseEv':
C:/opencv/build/include/opencv2/core/mat.hpp:367: undefined reference to `cv::Mat::deallocate()'
collect2.exe: error: ld returned 1 exit status

【问题讨论】:

    标签: c++ eclipse opencv mingw


    【解决方案1】:

    问题 1:您必须包含 opencv / c++ 头文件才能使其工作:

    #include "opencv2/core/core.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #using namespace cv;
    
    #include <iostream>
    #using namespace std;
    
    int main() {
    ...
    

    那么,问题 2:您不能将 vc12 库与 mingw 一起使用。 (这是一个不同的编译器)

    没有更多用于 opencv 的预构建 mingw 库,因此,在执行任何其他操作之前,您必须使用 cmake 在本地构建 opencv 库。


    再次,您真的需要使用 mingw / eclipse 吗? (vs express 还是免费的)

    【讨论】:

    • 提示:使用 CMake,编译 OpenCV 非常简单
    猜你喜欢
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 2015-12-08
    • 2018-10-23
    • 2019-05-18
    相关资源
    最近更新 更多