"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"。
开始时还以为必须要安装 .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