我们使用vs2005及以上版本编译的应用程序(C/C++),在客户机器运行时,会出现:

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

那么,我们怎么解决这个问题呢?

我们知道,使用VC编译C/C++程序,都需要相关的C runtime库才能运行。

下表为VC6以上版本使用C运行库情况:

VS版本 VC版本 C运行库
VS98 6.0 msvcr.dll
VS2003 7.1 msvcr71.dll
VS2005 8.0 msvcr80.dll
VS2008 9.0 msvcr90.dll
VS2010 10.0 msvcr10.dll

用VS2003以上版本的IDE编译的应用程序,怎么发布给最终用户呢?
    (1)IDE默认
        找到vcredist_x86.exe文件,随应用程序分发下去。
        这个vcredist_x86.exe需要用户独立安装。
       安装完,在“添加或删除程序”中会出现:

VS版本 显示名称(添加或删除程序)
VS2005 Microsoft Visual C++ 2005 Redistributable
VS2008 Microsoft Visual C++ 2008 Redistributable - x86 xxx
VS2010 Microsoft Visual C++ 2010 x86 Redistributable - xxx

注意:我们分发的vcredist_x86.exe文件,一定要拷贝开发机器上的!

(例如,VS2005的vcredist_x86.exe文件,

在我机器上的位置:C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\vcredist_x86.exe)

(2)VC6模式

(英文版本的IDE)
         a. 设置使用静态MFC
            "Project" -> "Properties" -> "Configuration Properties" -> "General"
            把"Use of MFC"设置为"Use MFC in a Static Library"
         b. 设置运行库为MT
            "Project" -> "Properties" -> "Configuration Properties" -> "C/C++" -> "Code Generation"
            把"Runtime Library"设置为"Multi-threaded (/MT)"

参考文章:http://waterlin.blog.35.cn/articles/how-to-compile-static-link-library-program-in-vc2008.html(细节之锤)

vs2005及以上版本的程序分发问题的更多相关文章

  1. 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

    最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...

  2. 项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”

    项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 ...

  3. 项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”。。 0

    项目   Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”.. 0 使用vs的NutGet包管理器时,另一台电脑从svn下载 ...

  4. VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异

    VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异 一直用VC++6.0,对VS2005不太了解,下面简单的熟悉一下VS2005的一下功能,总结一下VS2005在编写MFC时候的应用. ...

  5. Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”

    问题:     首先出现这个bug的是在我的vs2017社区版的ide上,这两天使用了出现了一个非常神奇的问题,就是我程序中的nuget包总提示找不到源文件,并且我点击Nuget还原的话还一直提示着一 ...

  6. Qt-网络与通信-TCP版本聊天程序

    代码在公司,考不出来,智能用书里自带的例子来写了. 不过这个TCP版本的程序并没有出来书上的效果,具体问题出在哪里还没有找到,运行书里自带的代码也是这样. 另外发现一个问题 Qt5.8.0VS版本对中 ...

  7. pip安装指定版本的程序的命令

    pip安装指定版本的程序的命令 pip install -i https://pypi.douban.com/simple/ django==1.10.3 或者 pip install django= ...

  8. C# 尝试还原程序包是出错:找不到“XXXXX”版本的程序包“XXXXXX”

    在C#管理程序包的时候有时会出现找不到某某版本的程序包 如果出现这样的情况,解决办法是在你当前项目获取当前类库下的packages.config里去删除一段配置就可以解决! 我的缺少的是版本为9.0. ...

  9. 低版本GCC程序向高版本移植的兼容性问题

    将低版本gcc编译过的程序移植到高版本GCC时, 可能会出现一些兼容性问题. 原因是, 为了适应新的标准,一些旧的语法规则被废弃了. 关于这方面的一些具体资料可从该处查询. 这里只是自己遇到的其中一个 ...

随机推荐

  1. ios中的任务分段

    工作比较忙,蛮久没有写东西了,今天我要写的是ios中的任务分段.大多数的情况下,我们用不到任务分段,但是如果我们是在执行比较频繁的函数或者这个函数是比较耗时, 某一条件下,我要执行新的任务,并且取消上 ...

  2. 17.1.1.3 Creating a User for Replication

    17.1.1.3 Creating a User for Replication 创建一个用户用于复制: 每个slave 连接到master 使用一个MySQL 用户名和密码, 因此必须有一个user ...

  3. Regionals 2012, Asia - Jakarta 解题报告

    啥都不会做了.. 做题慢死 A.Grandpa's Walk 签到题. 直接DFS就行. 注意先判断这个点可以作为一个路径的起点不. 然后再DFS. 否则处理起来略麻烦 #include <io ...

  4. 六、Nginx 防盗链

    盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载.尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链. ...

  5. 基于visual Studio2013解决C语言竞赛题之0803报数

       题目

  6. Java 获取到配置文件信息

    Java程序将数据库或者服务器IP写入到代码中,难免缺少灵活性. 如果写入到配置文件,部署到不通服务器上,只需要修改配置文 件即可. Java怎么读取配置文件 /** * 获取到配置文件信息 * @p ...

  7. Vim的常用命令笔记

    [简介] Vim是vi编辑器的改进版.vi是类UNIX系统里最常用的编辑器. [模式] 在shell中直接打vim filename就会进入普通模式.按i键进入编辑模式,此时Vim底部显示INSERT ...

  8. uva10791

    #include <iostream> using namespace std; int main(int argc, char *argv[]) { int j,k,m=0,flag; ...

  9. IMAP和POP3有什么差别?

    servCode=6010376">POP3协议同意电子邮件client下载server上的邮件,可是在client的操作(如移动邮件.标记已读等),不会反馈到server上.比方通过 ...

  10. jquery mobile自己定义webapp开发实例(一)——前言篇

    用jquery mobile做了一段时间的webapp开发,准备用自己的一个小demo做一个模块化的分享 点击demo演示 手机演示二维码: 此demo已经是比較老的版本号,用户体验流畅度确实还存在非 ...