Build chương trình với thư viện opencv trên g++

chào các bạn, mình có viết 1 chương trình có sử dụng opencv, khi mình build trên cmd hoặc terminal của visual studio code, với g++ thì lỗi liên kêt với opencv2/core/core.hpp
mình build như sau
g++ -o run imgpng.cpp main.cpp -I.\lib\opencv\build\include

thư mục opencv mình để trong thư mục lib trong project
làm thê nào để build được opencv trên g++ console nhỉ,
xincamon

-o chưa có output
Thử thay \ thành / xem

2 Likes

mình viết thiểu đó
vẫn không được , build trên terminal của vsc , hay cmd, powershell của win đều k được

chưa link thư viện
-L./lib/opencv/lib -lopencv

ko xài opencv nên ko biết nó cần link thư viện nào nên để -lopencv chung chung thử coi được ko

lỗi “undefined reference” nghĩa là ko link được với thư viện của opencv. Header có nhưng implementation ko có. Include header giống như include mục lục của 1 cuốn sách, nó có ghi hàm xyz ở trang 345 nhưng cuốn sách ko có trang 345…

2 Likes

nó ra lỗi này ạ :#
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lopencv

Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_photo -lopencv_aruco -lopencv_bgsegm -lopencv_ccalib -lopencv_dnn_modern -lopencv_dpm -lopencv_face -lopencv_fuzzy -lopencv_hdf -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_viz -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_ml -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core

1 đống lib chơi hết luôn đi

-lopencv_core trước rồi xem thiếu thư viện nào thì thêm thư viện đó vô

1 Like

e thấy trên mạng họ dùng cmake để build lại opencv , rồi có thư mục mingw trong opencv, còn opencv e đang dùng là tải bản build rồi cho windows, k biết có được k nhỉ

bản nào? Bản cho VC++ thì mingw nó ko build được

xài đại VS2017 luôn đi. Down cái vcpkg về rồi gõ vcpkg integrate install rồi vcpkg install opencv là xong, tạo project mới build ngon lành khỏi cần include gì hết

còn g++ trên windows thì xài msys2, giải thích mất công lắm

1 Like

khả năng e phải dùng cmake build lại opencv từ mã nguồn rồi, e dùng bàn build rồi 3.0 cho windows


e thấy hướng dẫn này phải dùng cmake build lại opencv để biên dịch với mingw

Bạn phải hiểu công cụ mà bạn dùng trước đã.

CMake nó cũng có nhiều chức năng, nếu bạn dùng 1 tool build trên nền linux như cygwin, mingw, msys thì nó sẽ build trực tiếp bằng gcc/gnu, còn build trên windows thì nó sẽ ra file dành cho visual studio

Bạn build qua mingw tức là bạn dùng 1 lib không phải build trực tiếp cho windows.
Nếu dùng mingw thì tốt nhất là cài msys2, nó có sẵn pacman cho bạn cài, hệt như dùng linux, có lẽ đơn giản hơn rất nhiều

2 Likes

mình chưa tìm hiểu về cmake, đang là sinh viên, bài tập cũng ít động chạm đến phần nào cần cmake :3 nên k rõ về cmake lắm

đi từ đơn giản để hiểu trước đã, cứ làm như bác tntxtnt hướng dẫn, nếu ngại cài vs nặng thì cài msys2 như mình nói, sẽ đơn giản và nhẹ hơn việc dùng vs

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?