收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章程序开发VC 编程
网络编程 | 网站建设 | 网络技术 | 设计教程 | 软件教学 | 程序开发 | 数据库开发 | 教育认证 | 硬件维护 | 媒体动画 | 机械电子 |
VS2005的程序文件分发问题及解决
[ 作者:佚名    转贴自:网络转载    阅读次数:51    更新时间:2007-9-9 10:44: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的程序文件分发问题及解决”版权归文章所有者,转载请注明出处!
 ·上一篇文章:VC开发多语言界面支持的简单方法      ·下一篇文章:没有了
相关文章
·VS2005的程序文件分发问题及解决[51]
·Vsftpd+Mysql+Pam配置虚拟用户方法[106]
·移除VS2005方案中的VSS绑定信息[100]
·用VSTS代码验证工具捕捉C/C++错误[94]
·Kvsc3.exe、Kvsc3.dll病毒查杀清除方法[85]
网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号