OpenCV - DLL丢失,但它不是? [英] OpenCV - DLL missing, but it's not?
问题描述
我正在尝试只有一个基本的程序与OpenCV与以下代码:
#includecv.h
#includehighgui.h
int main()
{
IplImage * newImg;
newImg = cvLoadImage(〜/ apple.bmp,1);
cvNamedWindow(Window,1);
cvShowImage(Window,newImg);
cvWaitKey(0);
cvDestroyWindow(Window);
cvReleaseImage(& newImg);
return 0;
}
当我运行这个,我得到
程序无法启动,因为
libcxcore200.dll从
计算机中丢失。请尝试重新安装
程序以解决此问题。
但是,我可以看到这个DLL。它存在。我已经加入以下为我的链接
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
有什么好处?我使用visual studio 2008。
当我链接.dll文件而不是.dll.a文件时,我得到
致命错误LNK1107:无效或损坏
文件:无法读取0x3F8
libcv200.dll
我按照 http:/ /opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010 ,但仍然坚持完全相同的问题,所以这里是我如何解决它。
-
获取MSVC 2010 express版本。
-
Win 32 OpenCV 2.2二进制文件并安装在默认位置。
-
已创建新项目。
-
项目设置
项目 - > OpenCV_Helloworld属性...配置属性 - > VC ++目录
包含目录。 .. add:
C:\OpenCV2.2 \include\;
add:
C:\OpenCV2.2\lib; C:\OpenCV2.2\bin;
源目录...添加:
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;
链接器 - >输入 - >其他依赖关系...
建立调试......添加:
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;
此时我以为我已经完成了,但遇到了您在调试模式下运行exe时描述的问题。最后一步很明显,一旦你看到它,选择:
Linker - > General ...将使用库依赖性输入设置为 b
$ b
希望这有帮助。
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
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.
Fetched MSVC 2010 express edition.
Fetched Win 32 OpenCV 2.2 binaries and installed in default location.
Created new project.
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.
这篇关于OpenCV - DLL丢失,但它不是?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!