Lỗi khi cấu hình opencv
ai giúp em với, em cài open cv nhưng code bất cứ cái gì nó cũng hiện lỗi nãy thì phải xử lí thế nào ạ
chắc là do thiếu DLL. Tìm mấy file dll của opencv mà bỏ vào thư mục chứa file exe.
em thêm đủ r mà a, mới đầu nó báo thiếu dll e bổ sung vào nó mới ra lỗi này
nếu build ở chế độ Debug thì e phải copy mấy file dll kết thúc có chữ ‘d’ như ‘opencv_highguid.dll’ ấy
cái thứ 2 là những file dll này có thể lệ thuộc cái file dll khác nữa :V ví dụ ‘jpeg62.dll’, ‘libpng16d.dll’, ‘tiffd.dll’, ‘webpd.dll’. Các thư viện này lại lệ thuộc các thư viện khác nữa như ‘zlibd1.dll’ :V :V Muốn truy lùng cái file này thì em có thể xài dumpbin.exe
của VS kèm sẵn. Bật cmd lên cd tới thư mục chứa file exe, rồi gõ:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
(có dấu " ")
để enable môi trường VC++ x64, rồi gõ dumpbin /dependents hienthianh.exe
nó sẽ ra các file dll cần thiết. Copy các file đó vào rồi lại gõ tiếp dumpbin /dependents
cho từng file đó :V :V
ví dụ nó in ra thế này
dumpbin /dependents Debug/test-opencv.exe
...
Dump of file Debug\test-opencv.exe
File Type: EXECUTABLE IMAGE
Image has the following dependencies:
opencv_highguid.dll
opencv_imgcodecsd.dll
opencv_cored.dll
MSVCP140D.dll
VCRUNTIME140D.dll
VCRUNTIME140_1D.dll
ucrtbased.dll
KERNEL32.dl
...
thì cần truy lùng tiếp các file
opencv_highguid.dll
opencv_imgcodecsd.dll
opencv_cored.dll
(các file in hoa hay ‘ucrtbased.dll’ có sẵn trong system rồi ko cần copy/truy tiếp)
vd file ’ opencv_imgcodecsd.dll’ lệ thuộc vào các file dll sau đây:
dumpbin /dependents Debug/opencv_imgcodecsd.dll
...
Dump of file Debug\opencv_imgcodecsd.dll
File Type: DLL
Image has the following dependencies:
opencv_imgprocd.dll
jpeg62.dll
webpd.dll
libpng16d.dll
tiffd.dll
opencv_cored.dll
MSVCP140D.dll
VCRUNTIME140D.dll
VCRUNTIME140_1D.dll
ucrtbased.dll
KERNEL32.dll
v.v…
em muốn chắc ăn thì ngồi mò từ từ cho ra hết =]]
của anh xài vcpkg nó copy sẵn cho thế này :V
có nhiều file dll thừa ko cần thiết nó cũng copy luôn như ‘opencv_videoiod.dll’ :V
Bạn kiểm tra xem VS version bạn đang dùng cần dll 32bit hay 64bit, bạn thử dùng cách này xem, nếu ko được đổi 64 sang 32 xem sao(cách này thì mình không biết lệnh )
c:\Windows\SysWOW64\msvcp100.dll
c:\Windows\SysWOW64\msvcp100d.dll
c:\Windows\SysWOW64\msvcr100.dll
c:\Windows\SysWOW64\msvcr100_clr0400.dll
c:\Windows\SysWOW64\msvcr100d.dll
làm sao để biết vs cần dlll nào v c, vào đâu để xem v ạ
vscode 32 cần dll 32, 64 thì cần 64. Nếu bạn không biết vscode đang xài là loại nào thì bạn xem lại file download về nó có ghi 64 không, nếu không thì bạn làm theo hướng dẫn sau
- mở vscode --> mở task manager (CTRL+SHIFT+ESC)—>detail —> chuột phải vào tên cột bất kì(VD:Name) chọn select columns---->tìm Platform ----> tích vào đó bấm ok ----->task manager sẽ thêm cột Platform với nội dung 32 hoặc 64 bit cho các chương trình đang chạy nhé.
Bạn vào nuget mà tải đỡ cài đặt nhiều