2017-05-20 116 views
0

我使用的Codeblocks 16.01与OpenCV 3.2.0-vc14安装到C:\ opencv 编译和链接搜索目录已在CodeBlocks中设置。在CodeBlocks中使用OpenCV库

我写了OpenCV的例子,有冲突如下:

-------------- Build: Debug in try_opencv (compiler: openCL)--------------- 

mingw32-g++.exe -L"C:\Program Files (x86)\Intel\OpenCL_SDK\6.3\lib\x86" -LC:\opencv\build\x64\vc14\lib -LC:\opencv\build\x64\vc14\bin -o bin\Debug\try_opencv.exe obj\Debug\main.o -lOpenCL C:\opencv\build\x64\vc14\lib\opencv_world320.lib C:\opencv\build\x64\vc14\lib\opencv_world320d.lib 
obj\Debug\main.o: In function `main': 
D:/TheOpenCLProgrammingBook/image_process_test/try_opencv/main.cpp:9: undefined reference to `cv::imread(cv::String const&, int)' 
D:/TheOpenCLProgrammingBook/image_process_test/try_opencv/main.cpp:10: undefined reference to `cv::namedWindow(cv::String const&, int)' 
D:/TheOpenCLProgrammingBook/image_process_test/try_opencv/main.cpp:11: undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)' 
D:/TheOpenCLProgrammingBook/image_process_test/try_opencv/main.cpp:12: undefined reference to `cv::waitKey(int)' 
obj\Debug\main.o: In function `ZN2cv6StringC1EPKc': 
C:/opencv/build/include/opencv2/core/cvstd.hpp:622: undefined reference to `cv::String::allocate(unsigned int)' 
obj\Debug\main.o: In function `ZN2cv6StringD1Ev': 
C:/opencv/build/include/opencv2/core/cvstd.hpp:664: undefined reference to `cv::String::deallocate()' 
obj\Debug\main.o: In function `ZN2cv3MatD1Ev': 
C:/opencv/build/include/opencv2/core/mat.inl.hpp:592: undefined reference to `cv::fastFree(void*)' 
obj\Debug\main.o: In function `ZN2cv3MataSERKS0_': 
C:/opencv/build/include/opencv2/core/mat.inl.hpp:613: undefined reference to `cv::Mat::copySize(cv::Mat const&)' 
obj\Debug\main.o: In function `ZN2cv3Mat7releaseEv': 
C:/opencv/build/include/opencv2/core/mat.inl.hpp:704: undefined reference to `cv::Mat::deallocate()' 
collect2.exe: error: ld returned 1 exit status 
Process terminated with status 1 (0 minute(s), 0 second(s)) 
10 error(s), 0 warning(s) (0 minute(s), 0 second(s)) 

它是如此迷茫。有人可以帮我吗?

回答

0

您正试图链接库,例如

C:\opencv\build\x64\vc14\lib\opencv_world320.lib 

已建成与MS的Visual Studio 2014 C++编译器程序 您正在构建具有不同的C++编译器,即mingw32-g++

这是行不通的。由一个C++编译器构建的库是在与具有不同 一个内置程序或库,并与一个MS分析C内置特别是,代码一般 二进制不相容++编译器是二进制 与由GCC编译器(其使用的是)构建的代码不兼容。

此外,似乎你正在建设一个32位程序 与mingw32-g++ - 因为32位TDM GCC编译器在代码:: Blocks的16.01捆绑 默认编译器 - 并试图链接 64与它的位图书馆。即使库不是由不兼容的编译器 生成的,也不能将64位代码与32位代码 链接。

您在32 [64]位程序中链接的所有库必须使用相同的编译器或至少一个兼容ABI的 编译器构建,并且它们也必须是32位。

重新开始并从源代码构建OpenCV,使用您的mingw32编译器针对mingw,32位, 。从zip文件中获取windows源代码Source codethe GitHub OpenCV repo。 看起来好像您可能已经从源代码构建。如果是这样,那么你 建库的64位VC++ 14,不mingw32的,和那些库 是无用的。

要重新构建库并在Code :: Blocks中配置OpenCV项目, 请仔细遵循this tutorial, 。

+0

我知道了!谢谢迈克。 – okeyla