我借助OpenCV开发了一个图像处理的程序,把它封转成一个DLL,但是,在动态调用这个DLL的时候,使用LoadLibrary却始终返回NULL,查看错误显示配置不正确,程序无法正常启动,这是什么原因?
我的OpenCV的DLL应该放在哪个目录下才可以被正常找到?

解决方案 »

  1.   

    是manifest的问题,另外检查一下你关于运行时库的编译选项,是不是一致的?
      

  2.   

    如何检查编译选项是否一致?还有该怎么设定manifest?同一个工程我拷到朋友的电脑上就可以正常载入,这是什么问题?
      

  3.   

    还有,如果调用exe时Release,则可以正常载入,若是Debug则不行,这又是为什么?
      

  4.   

    opencv用的是哪个版本1.0还是2.2,编译过opencv了吗,release的调用编译的opencv的releas版本,debug的调用相应的debug版本,属性中都设置完全了吗
      

  5.   


    这个manifest很让人头疼,你在网上搜一下吧,关于如何发布VC2008的程序的运行时库的编译选项在C++  code generation  下面有个runtime library
      

  6.   

    Release版本的程序,调用的系统DLL(好多),都是WONDOWS系统目录下存在,与开发环境无关,但DEBUG版本调用的系统DLL(好多),是开发环境中自带的,两者功能一样,但名称不一样,所在DEBUG版本以未装开版本的机器上无法运行,一般可以将DEBUG版本选择连接静态库,将所用的系统库直接连接进去了,就不需要单独的DLL。
    加载DLL失败的原因一般是缺少文件,你可能说我的DLL就一个文件,实质上一个DLL在实现的过程中调用了很多DLL,大多是通过静态方式连接的,如A调B.dll,B中连接了c.lib,d.lib,也就是B使用c.dll d.dll如果缺少c.dll d.dll,即便B.dll存在,A在加载B.dll时也会失败。