[英]I can compile with g++ but get a buggy program with equivalent cmake (GTK error)
我在main.cpp
中有一個非常簡單的程序,它顯示帶有 openCV 的圖像。 我使用以下命令編譯它:
g++ -o main main.cpp $(pkg-config opencv4 --cflags --libs)
此問題的附錄中提供了pkg-config opencv4 --cflags --libs
的 output 。
然后程序完美運行,我可以在新的 window 中看到我的.jpg
文件。
我決定按照 openCV 提供的示例,使用cmake
對其進行編譯。 我的程序( main.cpp
)基本相同。
所以我的 CMakeLists.txt 文件是:
cmake_minimum_required(VERSION 3.1)
project( main )
find_package( OpenCV REQUIRED )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pthread")
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBS} )
我使用以下方法構建我的項目:
mkdir build
cd build
cmake ../
make
並啟動程序,令我驚訝的是,它失敗並出現以下錯誤:
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.5.5-dev) ${ROOT_DIR_OF_MY_PROJECT}/opencv-4.x/modules/highgui/src/window.cpp:1251: error: (-2:Unspecified error) The function is not implemented.
Rebuild the library with Windows, GTK+ 2.x or Cocoa support.
If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config,
then re-run cmake or configure script in function 'cvNamedWindow'
其中ROOT_DIR_OF_MY_PROJECT
是對應於../
我的main.cpp
所在位置的完整路徑。
g++
命令做任何不同的事情,我該如何糾正它的行為?請詢問任何進一步的信息。
g++
,make -n
發出的命令並復制它們以自己運行它們,但是make -n
在 cmake 之后給出了很多cmake
所以我不明白發生了什么。 pkg-config opencv4 --cflags --libs
(可讀性換行):
-I/usr/include/opencv4/opencv -I/usr/include/opencv4 -lopencv_stitching
-lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib
-lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui
-lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs
-lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg
-lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light
-lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching
-lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot
-lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_ximgproc
-lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d
-lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto
-lopencv_photo -lopencv_imgproc -lopencv_core
丹·馬塞克絕對正確! (看評論)
我沒有鏈接到相同的版本,我通過打印cmake
嘗試的包含目錄看到了該版本。 請在下面找到更正后的CMakeLists.txt
文件。
cmake_minimum_required(VERSION 3.1)
project( main )
# Links to the wrong version of openCV
# find_package( OpenCV REQUIRED )
find_package(PkgConfig REQUIRED)
pkg_check_modules(OpenCV REQUIRED opencv4)
# MESSAGE(${OpenCV_INCLUDE_DIRS})
# MESSAGE(${OpenCV_LIBRARIES})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pthread")
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBRARIES})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.