关闭

unable to load dll(由于应用程序配置不正确,应用程序未能起动)问题解决方法

标签: dllmicrosoftmfcexceptionc#tools
6689人阅读 评论(0) 收藏 举报
分类:

unable to load dll(由于应用程序配置不正确,应用程序未能起动)问题解决方法

已有 5970 次阅读 2009-10-27 16:10 |个人分类:C#|系统分类:科研笔记

自己写的一个DLL(VC),然后用C#调用,在自己的机器上运行没有问题,放在其它机器(XP)上,就出现如标题所示的问题,换一台2003出现新的问题:找不到指定的模块(Exception from HRESULT:0X8007007E)。意思应该都差不多。上网搜索解决方法。

找到了这篇文章(http://hi.baidu.com/talksmiles/blog/item/6709d23423f7993e5bb5f5f2.html),上面说的很详细,分为一,二,三,四,这里摘抄如下:

------摘抄------

方法一:
在C:\Program Files\Microsoft Visual Studio 8\VC\redi
st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest

把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。

其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!

方法二:
修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。

方法三:

工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
这样生成的exe文件应该就可以在其他机器上跑了。

方法四:

你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装

------摘抄------

我觉得方法二、三比较简单,并且有印象以前在做FFPGATHER的时候,也遇到了同样的问题,就是按这个方法解决的问题。于是满怀信心的一通设置,编译链接,跑到2003下运行程序,发现问题依旧。

正想放弃,开始采用方法四的时候,一想自己基于OPENCV,是不是自己没有装OPENCV的原因,虽然我把cv, cxcore, highgui, cv100, cx100等dll和lib文件,已经放在了程序所在文件夹下。于是将OPENCV装在了2003上,运行程序,问题依然存在。于是百思不得其解。我用Depends(VS2005,2008相应文件夹下,如C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin有这个程序)进行查看(在没有OPENCV的情况下),发现少了两个DLL,IESHIMS.DLL及WER.DLL。于是去查这相关的文章,找到很多,按照一一尝试,都没能解决问题。

偶然情况下,重启了一下电脑,再运行程序,惊喜一切正常。为了确定,是否为OPENCV没有安装的问题,将OPENCV所在文件夹改名为OPENCV0,再次运行程序,则再次出现问题。于是确定是没有安装OPENCV的原因。

总结如下:

1、遇到这类问题,用方法二、三进行设置,并生成release版的程序,应该就可以了。

2、OPENCV安装完成,由于其设置了环境变量,需要重启机器,才能生效。

在解决这个问题过程中,搜索到其它一些有用的链接,表示感谢,如下:

http://www.cnblogs.com/kiddo/archive/2008/04/11/1148427.html


http://www.jschina.com.cn/gb/jschina/tech/17/userobject1ai1410564.html

http://blog.csdn.net/flyjimi/archive/2006/09/08/1194676.aspx
 
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:359537次
    • 积分:3969
    • 等级:
    • 排名:第8310名
    • 原创:55篇
    • 转载:49篇
    • 译文:1篇
    • 评论:47条
    文章分类
    最新评论