[转]由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题

来源:互联网 发布:淘宝助理怎么回收单号 编辑:程序博客网 时间:2024/05/21 08:52
我们用 VS 2005 编写非托管的程序, 在一台未安装 .net 开发环境的机器上运行会出现

"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"。

开始时还以为必须要安装 .net Framework 2.0 , 然后安装了 .net Framework 2.0 。发现仍然报错。此时晕了, 这是为什么呢?

网上一查: 才知道是缺少 DLL 文件, 可是我的程序里面有一部分是 MFC 写的,有一部分是 Win32 , 还有很多 DLL, 以及驱动程序,缺少的DLL那就多了, 而且MFC 和 Win32 需要不同的 DLL。

后来用 dependens.exe 查看了各个应用程序需要哪些额外的DLL文件, 发现有些 DLL 确实是目标机器中没有的 ,难怪会报错. 以前用 VC 6.0 时 如果缺少 DLL 会给出提示,现在不给提示真让人晕了,该死的 MS

我做了下面的试验:

(1) 采用 VS 2005 默认的编译器选项, 构建 Win32 程序, 检查他需要哪些额外的 DLL。编译选项如下图所示:


build 后检查生成程序需要下面的 DLL:

MSVCR80D.DLL, msvcrt.dll  在本机我找到了这2 个文件并和应用程序放在了同一目录下, 结构还是报错误。根据已有的资料我知道,还缺少文件, 继续找。

PS:把运行时库改成 多线程(/MT)..禁用代码优化也可以解决此问题..不过要生成Release版本.

我的VS安装在 E: 盘, 从下面路径中找:

E:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 我们需要从这个文件夹中拷贝文件 Microsoft.VC80.DebugCRT.manifest ,该文件是文本格式的, 包含了版本信息。

注意现在我们构建的是 Debug 版本, 需要从这个文件中得到该文件。

总结: 构建 Win32 程序时, 采用VS默认的编译选项, 需要下面文件:

(1) MSVCR80D.DLL

(2) msvcrt.dll (我测试过这个文件 , 即使没有也没有关系, 为了保险起见还是加上吧)

(3)E:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT/Microsoft.VC80.DebugCRT.manifest

现在再试验一下 Release 版本的:

Release 版本的程序直接就可以运行, 根本就不需要什么其它的文件。

我又测试了其它几个项目, win32 Release 版本不需要其它的文件。


MSVCR80D.DLL

MFC: 现在我添加了
mfc80d.dll
mfc80ud.dll
Microsoft.VC80.DebugCRT.manifest
Microsoft.VC80.DebugMFC.manifest
msvcr80d.dll
debug 版本才可以运行

更详细信息:

http://www.busfly.cn/post/5.html



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1811975

 
原创粉丝点击