转自:http://blog.csdn.net/laiboy/article/details/5038165

如果你编译了一个VC2008的默认的CRT/MFC的应用程序,如果目标部署电脑上没有安装相应的VC2008的动态库,当运行你的程序的时个,会出现如下错误信息.

这是因为程序使用了基于VC2008的CRT/MFC的动态库版本.

解决这个问题,有三种方法:

1.使用静态链接库编译(缺点,生成的exe的程序过于庞大)

2.使用vcredist_x86.exe / vcredist_x64.exe 将VC2008的发行版的DLL安装在你的系统上.(缺点,只能支持发行版,调试版程序不能支持)

3.将你的程序依赖的CRT/MFC的动态库与你的程序一起发布(放在与你的发布程序同一目录中)

第一种和第二种就不详细讲如何实现了,只要讲第三种方法如何实现.优其是程序的开发是使用了VC2008 SP1的版本开发的程序.

在你的VC2008的安装目录下有两个目录,

  • C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/redist/x86/Microsoft.VC90.CRT
  • C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/redist/x86/Microsoft.VC90.MFC

只要将这两个目录下的文件一同拷贝到发布程序的同一目录下:

  • Microsoft.VC90.CRT.manifest
  • msvcr90.dll
  • msvcp90.dll
  • msvcm90.dll
  • Microsoft.VC90.MFC.manifest
  • mfc90.dll
  • mfc90u.dll
  • mfcm90.dll
  • mfcm90u.dll

这些是这个程序依赖的发行版动态库,同理,如果是调试版的发布程序,也一样把相应的调试动态库拷贝到相应目录.

程序如你意运行起来了!

但是,如果你安装的是VC2008 SP1的版本的时候,问题就来了,你的程序也一样运行不起来了!

原因就是安装了VC2008 SP1的时候,它把"VC/redist"用新的版本文件代替了,问题不大,但是,这个程序的版本是依赖于新的manifest的文件的,当你编译VC2008-SP1的程序的时候,它同时把RTM-version写入程序的manifest文件中,这个是旧的RTM-version,不与新版本的VC2008-SP1的"CRT/MFC"manifest版本一致,因此程序运行的时候是拒绝导入这些新的VC2008-SP1的CRT/MFC的运态库!

解决方法有两种.

方法一:

最简单的,修改Microsoft.VC90.CRT.manifest和Microsoft.VC90.MFC.manifest文件,将新的版本号改为旧的版本号,如果是依赖其它的Microsoft.VC90.*.manifest的文件,也同样是如此修改!

如果是装了VC2008-SP1后,它的版本号是“9.0.30729.8″

未装VC2008-SP1前的版本号为"9.0.21022.8"

过程如下:

将所依的动态库及它们的 manifest 文件拷贝到发布应用程序的同一目录下,并修改Microsoft.VC90.*.manifest文件,将

version="9.0.30729.1"修改为version="9.0.21022.8"恭喜你,你的程序运行起来了!方法二修改你的程序的所依赖的manifest,这样程序会依整于新的manifest.过程如下:在stdafx.h
这个文件中,增加如下宏定义:#define _BIND_TO_CURRENT_VCLIBS_VERSION 1程序编译后就会依赖于新的manifest,版本号为

"9.0.30729.1"无须再修改manifest文件中的version版本号了.将所依的动态库的及它们的 manifest 文件拷贝到发布应用程序的同一目录下恭喜你,程序又运行起来了!注意:如果你是想要新的MFC-feature-pack的功能,用这种方法是最好的.注意一点,非常重要,如果已经安装了vcredist_*.exe程序包,注意的是Dll会自动把引用调到系统目录下的WinSxS目录下的,即不再引用同一目录下的动态库!如果是编译时使用了(/clr)这个编译选项去支持.net开发,你必须要安装.net framework redistributable包!不过,在2010,编译的程序会不再需要manifest文件!

部署VC2008应用程序相关推荐

  1. MindSpore部署图像分割示例程序

    MindSpore部署图像分割示例程序 本端侧图像分割Android示例程序使用Java实现,Java层主要通过Android Camera 2 API实现摄像头获取图像帧,进行相应的图像处理,之后调 ...

  2. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

    本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. (二)Amazon Lightsail 部署LAMP应用程序之部署单片LAMP应用程序

    部署单片LAMP应用程序 简介:通过复制应用程序代码并提供链接PHP前端和本地MySQL数据库的参数,将LAMP对战应用程序部署到先前启动的Lightsail实例中.完成后,Apache/PHP前端和 ...

  4. 开发笔记7 | 部署 Go 应用程序到阿里云 ECS

    前言 在上一篇文章中,我们介绍了<部署 Java 应用程序到阿里云 ECS>,在本文中,我们来介绍 部署 Go 应用程序到阿里云 ECS. 本地开发 无论是编写云端运行的,还是编写本地运行 ...

  5. 如何打包和部署air应用程序

    来源:http://www.solosky.net/2010/12/package-and-deploy-air-application.html 昨天折腾了一个晚上,终于把我写的美女时钟桌面 的ai ...

  6. CentOS单机安装k8s并部署.NET 6程序

    学习云原生,k8s 是一个基础,为了做一些实验,单机部署是最方便的,下面将介绍在 CentOS 中单机安装 k8s ,并将一个 .NET 6 的程序发布到 k8s 中. 环境 宿主机:Mac 10.1 ...

  7. nginx部署与小程序配置

    nginx部署与小程序配置说明 1.安装nginx $ sudo apt-get update $ sudo apt-get install nginx 2.配置https: 查看: https:// ...

  8. 如果在docker中部署tomcat,并且部署java应用程序

    2019独角兽企业重金招聘Python工程师标准>>> 如果在docker中部署tomcat,并且部署java应用程序 博客分类: docker 1.先说如何在docker中部署to ...

  9. 怎么抓python程序的包_如何在AWS上部署python应用程序

    如何在AWS上部署python应用程序,学姐呕心沥血亲自总结,亲测有效,比网上看网上大把大把的文档要快得多! 作者:蕾学姐 亚马逊云计算服务(Amazon Web Services,缩写为AWS),由 ...

  10. docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解

    1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创 ...

最新文章

  1. python输入输出-Python input()和print()终端输入输出
  2. mysql全局权限账户%登录不上ERROR 1045 (28000): Access denied for user #39;mhz#39;@#39;localhost#39; (using ...
  3. idea自动更新java_IntelliJ IDEA自动更新资源文件
  4. UNWAVERING SPIRIT AND VALUES
  5. Quartz执行周期配置
  6. 【dfs】【模拟】【树】I Like Matrix Forever!
  7. Oulipo (KMP出现次数)
  8. RDD持久化、广播、累加器
  9. 操作系统复习之进程描述和控制
  10. mysql数据库d盘_Windows Server 2008 R2下修改MySQL 5.5数据库目录为D盘
  11. 寒假学习之stm32(15)----DMA(direct memory access)
  12. Boolean中0与1的转化
  13. 等保2.0控制点总结
  14. html个人中心网页,个人中心页面.html
  15. 【Excel】给自己做个2020年高考倒计时
  16. C#与Word文档的交互
  17. 身份证号码含义及最后一位校验算法(ISO 7064:1983.MOD 11-2)
  18. 测一测自己的Sql能力之MYSQL的GROUPBY你弄懂了吗?
  19. html制作京东新闻资讯页,京东店铺怎么建立活动页面?如何实现具有视频的活动页?...
  20. CodeForces - 1569B Chess Tournament

热门文章

  1. 2022张宇考研基础30讲 第八讲 一元函数积分学的概念与计算
  2. 遗传算法小结及算法实例(附Matlab代码)
  3. 网页设计\网页制作常用软件大全
  4. EPT DATA数据库能查到1998-2013年工业企业数据库
  5. 【考研经验】2018复旦计算机专硕零基础学渣考研经验贴
  6. FreeRTOS 教程指南 学习笔记 第四章 队列管理
  7. MySQL安装及可视化工具使用
  8. An Empirical Analysis of Anonymity in Zcash
  9. linux centos系统清理垃圾,centos 清理内存缓存
  10. 通过海康sdk捕获码流数据实现抓图功能