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的程序文件分发问题及解决

VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要...
  • stylehack
  • stylehack
  • 2007年09月03日 02:32
  • 197

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

转载(http://dev.csdn.net/author/liguangyi/4fdf6bff0ae9472c9ff0ea814a23b03f.html)VC2005编译出来的程序文件,采用了man...
  • kellymalan
  • kellymalan
  • 2008年01月05日 11:57
  • 318

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

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

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

VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的dll连接库放到一起就成了。对于winxp、win2003系统就要麻...
  • hanzz2007
  • hanzz2007
  • 2011年09月01日 16:35
  • 621

vs2005 修改新增文件时的默认编码方式

 vs2005 修改新增文件时的默认编码方式因为程序要适应多语言,且要在繁体与简体开发环境中都适用,所以项目中的文件需要用UTF-8方式的保存.但因为我的操作系统中文的,所以每次新建文件的时候默认编码...
  • xinew
  • xinew
  • 2010年04月07日 17:20
  • 1088

vs2005及以上版本的程序分发问题

我们使用vs2005及以上版本编译的应用程序(C/C++),在客户机器运行时,会出现:     “由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”     那么,我们怎...
  • xiaobin_HLJ80
  • xiaobin_HLJ80
  • 2013年06月21日 02:04
  • 2281

解决VS2005无法打开项目的问题

时间:2013.3.2 事件:突然发现用VS2005打开工程,整个程序就自动关闭(或者说退出)了;刚开始时即使可以打开工程,一旦打开”资源视图“,同样是程序自动退出。重新安装VS2005后,问题依然...
  • skywalker_leo
  • skywalker_leo
  • 2013年03月07日 16:02
  • 2446

程序调试中的常见问题及解决方法

程序调试中的常见问题及解决方法 【转载文章真麻烦_(:з」∠)_】
  • qq_36693514
  • qq_36693514
  • 2017年09月09日 08:55
  • 256

vs2005中编写纯c程序

步入.net时代后,VS马上就换了个脸,对那些平时用VC做作业的人来说,立马就受到了个下马威——直接新建源代码不能编译了!看到菜单栏上一堆一堆的 选项,仿佛VS2005已经不能作为纯C的IDE使用了...
  • redline2005
  • redline2005
  • 2010年09月03日 09:00
  • 951

no session问题的产生与解决

no session问题的产生是由于,才有对象导航加载数据,页面使用数据时,由于session已经关闭,无法加载相应数据,此时,可以配置关联关系时设置lazy属性=false,立即加载方法,也可以提前...
  • qq_28334711
  • qq_28334711
  • 2016年07月26日 22:35
  • 1618
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2005的程序文件分发问题及解决
举报原因:
原因补充:

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