请选择 进入手机版 | 继续访问电脑版

做网站仿网站采集数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1157|回复: 0

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

[复制链接]

2

主题

2

帖子

0

积分

新手上路

积分
0
发表于 2012-12-9 13:54:14 | 显示全部楼层 |阅读模式
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.MFCMicrosoft.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看看,嗯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|做网站仿网站采集数据

GMT+8, 2022-9-30 12:16 , Processed in 0.038616 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表