VS2005的程序文件分发问题及解决

原创 2006年06月01日 10:26:00

VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要麻烦的多了,VC的连接库默认是被放到了winsxs目录下,结果造成在这些系统上,直接拷贝exe文件,往往是不能运行(找不到msvcr80.dll、mfc80.dll文件等),或者在事件日志中报错。

解决方式:
方式一、在目标系统上安装2005版vcredist_x86.exe。

方式二、直接拷贝VS8目录下的VC / redist / x86 /  目录下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个文件夹,到exe所在的目录下,目录结构如下:
./myapp.exe
./myapp.dll
./Microsoft.VC80.CRT/
./Microsoft.VC80.MFC/
./Microsoft.VC80.MFC/Microsoft.VC80.MFCLOC/
然后修改Microsoft.VC80.MFCLOC目录下的Microsoft.VC80.MFCLOC.manifest文件,将其中的version="8.0.50727.42",修改为version="8.0.50608.0"。


方式二的目录结构,在xp和2003下是没有问题的,但是在win98/win2000中,因为exe和dll不在同一目录下,就会出现找不到dll的问题。

有什么更好的解决呢?呵呵,国外的一个大牛(http://blog.kalmbachnet.de)找到一绝招:

方式三、
  1、首先编译myapp.exe的时候,在配置中,选择生成单独的manifest文件,如:myapp.exe.manifest。
  2、将myapp.exe、myapp.exe.manifest拷贝到一个目录下
  3、将Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个目录下的文件,都拷贝到myapp.exe所在的目录下。
  4、将Microsoft.VC80.MFCLOC.manifest文件中的version="8.0.50727.42",修改为version="8.0.50608.0"。
  5、编辑myapp.exe目录下的所有 .manifest文件,将文件中的publicKey键值删除,一般是publicKeyToken="1fc8b3b9a1e18e3b"
  6、然后运行myapp.exe看看,嗯。

相关文章推荐

vs2005 无法启动程序 系统找不到指定的文件---解决方案

VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打...

VS2005 解决"应用程序配置不正确,程序无法启动"问题

用vs2008 开发c++项目,遇到拷贝到没有开发环境的测试机器运行,弹出应用程序配置不正确,程序无法启动的问题。 网上得文如下: 在具体解决得时候需要根据具体情况寻找相关文件得位置 ...

解决VS2005/VS2008下在子目录下部署DLL的私有程序集部署问题

采用VC++2005非托管C++代码开发,主程序名为MyApp.exe,MyPulgin.dll。MyApp.exe部署所在目录为主目录,MyPulgin.dll部署在主目录下的Plugin子目录下,...

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

今天在准备发布用VS2005写的那个程序时,拷贝到我同事机器上,双击突然出现了“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题“,这个问题很让我意外,以前只出现过缺少D...

程序从VC6移植到VS2005环境下的常见问题(三)

以下内容引自:http://hi.baidu.com/wuxiaoming1733/blog/item/6fc3df09e68dcc8ad1581b93.html 最近开发平台由VC6....

程序从VC6移植到VS2005环境下的常见问题(一)

以下内容引自:http://hi.baidu.com/liugang585570/blog/item/cda9ac3fa785f93771cf6c32.html 提示 WINVER n...

使用VS2005开发64位驱动程序需要注意的一些问题

1、首先在Autoexec.bat里边设置好 Set WDKDIR=L:/DDK/Vista 64位驱动使用Vista WDK来开发。 Include: $(WD...
  • whf727
  • whf727
  • 2011年01月05日 18:32
  • 2502

VS2005使用map文件查找程序崩溃原因

一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005...

VS2005为Windows移动程序创建安装文件

Visual Studio2005支持诸如Pocket PC和Smartphone等Windows移动应用程序的开发。但是,当一个程序开发完了之后,如何将它部署到用户的设备上呢?在Visual Stu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2005的程序文件分发问题及解决
举报原因:
原因补充:

(最多只允许输入30个字)