簡體   English   中英

在CodeBlocks中使用OpenCV庫

[英]Use OpenCV library in CodeBlocks

我正在將Codeblocks 16.01和OpenCV 3.2.0-vc14一起安裝到C:\\ opencv中。編譯和鏈接搜索目錄已在CodeBlocks中設置。

我寫了一個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))

好困惑 有人可以幫我嗎?

您正在嘗試鏈接庫,例如

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

在您使用其他C ++編譯器(即mingw32-g++構建的程序中,已使用MS Visual Studio 2014 C ++編譯器構建的文件。

那行不通。 由一個C ++編譯器構建的庫通常與由另一種C ++編譯器構建的程序或庫不兼容,特別是,由MS C ++編譯器構建的代碼與由GCC編譯器(您正在使用)構建的代碼不兼容。

此外,您似乎正在使用mingw32-g++構建32位程序-因為32位TDM GCC編譯器是Code :: Blocks 16.01中捆綁的默認編譯器,並且正嘗試與其鏈接64位庫。 即使這些庫不是由不兼容的編譯器創建的,也無法將64位代碼與32位代碼鏈接在一起。

您在32 [64]位程序中鏈接的所有庫都必須使用相同的編譯器或至少是與二進制ABI兼容的編譯器構建,並且它們也必須是32 [64]位。

重新開始並使用mingw32編譯器從源代碼構建OpenCV,以32位目標mingw為目標。 GitHub OpenCV repo的zip存檔源代碼中獲取Windows源代碼 似乎您可能已經從源代碼構建了。 如果是這樣,則您為64位VC ++ 14(而不是mingw32)構建了庫,這些庫是無用的。

要再次構建庫並在Code :: Blocks中配置OpenCV項目,請仔細閱讀本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM