OpenCV - DLL丢失,但它不是? [英] OpenCV - DLL missing, but it's not?

查看:287
本文介绍了OpenCV - DLL丢失,但它不是?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试只有一个基本的程序与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 ,但仍然坚持完全相同的问题,所以这里是我如何解决它。


  1. 获取MSVC 2010 express版本。


  2. Win 32 OpenCV 2.2二进制文件并安装在默认位置。


  3. 已创建新项目。


  4. 项目设置



    项目 - > 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.

  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.

这篇关于OpenCV - DLL丢失,但它不是?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆