Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV - DLL missing, but it's not?

Tags:

c++

opencv

I am trying just a basic program with OpenCV with the following code:

#include "cv.h" #include "highgui.h"  int main() {     IplImage* newImg;     newImg = cvLoadImage("~/apple.bmp", 1);     cvNamedWindow("Window", 1);     cvShowImage("Window", newImg);     cvWaitKey(0);     cvDestroyWindow("Window");     cvReleaseImage(&newImg);     return 0; } 

When I run this, I get

The program can't start because libcxcore200.dll is missing from your computer. Try reinstalling the program to fix this problem.

However, I can see this DLL. It exists. I have added the following to the input dependencies for my linker

C:\OpenCV2.0\lib\libcv200.dll.a C:\OpenCV2.0\lib\libcvaux200.dll.a C:\OpenCV2.0\lib\libcxcore200.dll.a C:\OpenCV2.0\lib\libhighgui200.dll.a

What gives? I'm using visual studio 2008.

When I link the .dll files instead of .dll.a files, I get

fatal error LNK1107:invalid or corrupt file: cannot read at 0x3F8 libcv200.dll

like image 910
charles-22 Avatar asked Apr 22 '10 22:04

charles-22


People also ask

Why are my DLL files missing?

Sometimes, you'll get a missing . dll file error while using hardware such as a printer. This error can be due to an older version of the driver that is not compatible with the updated . dll file, so the printer is looking for a wrong .

How do I reinstall missing DLL files?

Locate the files in your Downloads folder and double-click them to install the updates. Reboot your computer. Run the installer again for the original program giving you the missing DLL file error message. You should be able to complete the installation with no problems or error messages.

What is the easiest fix for a missing DLL error?

1] Run System File Checker The safest way to fix DLL file missing or corrupted errors thrown up by your Windows operating system would be to run the built-in System File Checker, which will replace missing or corrupted system files.


1 Answers

I followed instructions on http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010 but was still stuck on exactly the same problem, so here's how I resolved it.

  1. Fetched MSVC 2010 express edition.

  2. Fetched Win 32 OpenCV 2.2 binaries and installed in default location.

  3. Created new project.

  4. Project setup

    Project -> OpenCV_Helloworld Properties...Configuration Properties -> VC++ Directories

    Include Directories... add: C:\OpenCV2.2\include\;

    Library Directories... add: C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;

    Source Directories... add:

    C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\contrib\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src; 

    Linker -> Input -> Additional Dependencies...

    For Debug Builds... add:

    opencv_calib3d220d.lib;opencv_contrib220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib; 

At this point I thought I was done, but ran into the problem you described when running the exe in debug mode. The final step is obvious once you see it, select:

Linker -> General ... Set 'Use Library Dependency Inputs' to 'Yes'

Hope this helps.

like image 65
skoeberl Avatar answered Oct 02 '22 17:10

skoeberl