vs2005及以上版本的程序分发问题
我们使用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及以上版本的程序分发问题的更多相关文章
- 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)
最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...
- 项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 ...
- 项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”。。 0
项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”.. 0 使用vs的NutGet包管理器时,另一台电脑从svn下载 ...
- VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异
VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异 一直用VC++6.0,对VS2005不太了解,下面简单的熟悉一下VS2005的一下功能,总结一下VS2005在编写MFC时候的应用. ...
- Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
问题: 首先出现这个bug的是在我的vs2017社区版的ide上,这两天使用了出现了一个非常神奇的问题,就是我程序中的nuget包总提示找不到源文件,并且我点击Nuget还原的话还一直提示着一 ...
- Qt-网络与通信-TCP版本聊天程序
代码在公司,考不出来,智能用书里自带的例子来写了. 不过这个TCP版本的程序并没有出来书上的效果,具体问题出在哪里还没有找到,运行书里自带的代码也是这样. 另外发现一个问题 Qt5.8.0VS版本对中 ...
- pip安装指定版本的程序的命令
pip安装指定版本的程序的命令 pip install -i https://pypi.douban.com/simple/ django==1.10.3 或者 pip install django= ...
- C# 尝试还原程序包是出错:找不到“XXXXX”版本的程序包“XXXXXX”
在C#管理程序包的时候有时会出现找不到某某版本的程序包 如果出现这样的情况,解决办法是在你当前项目获取当前类库下的packages.config里去删除一段配置就可以解决! 我的缺少的是版本为9.0. ...
- 低版本GCC程序向高版本移植的兼容性问题
将低版本gcc编译过的程序移植到高版本GCC时, 可能会出现一些兼容性问题. 原因是, 为了适应新的标准,一些旧的语法规则被废弃了. 关于这方面的一些具体资料可从该处查询. 这里只是自己遇到的其中一个 ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之0604二维数组置换
题目
- 函数可以作为Javascript对象(哈希表)的键吗
一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...
- line-height具体解释
章:浏览器与Hack].7.3.5 应用:单行文字在垂直方向居中在网页设计中,往往为了突出标题而加入背景图案.如图7-31所看到的. watermark/2/text/aHR0cDovL2Jsb2cu ...
- 两个activity之间的数据传递
1.清单文件第二个activity<activity android:name="com.example.twodatapass.ResultActivity" androi ...
- android软键盘弹出隐藏的监听
通过网上搜索关于软键盘的隐藏弹出的监听,有几种方式,其中最有效的方式是在View的Onlayout()里面做文章 具体代码: 将布局视图自定义,重写onlayout()方法,然后在主Activity里 ...
- BZOJ 3367: [Usaco2004 Feb]The Big Game 球赛( dp )
dp(i)表示前i个人最少坐多少辆车, dp(i) = min(dp(j) + 1, dp(i)) (0 <= j < i 且 (i, j]的人能坐在一辆车上) 时间复杂度O(n²) -- ...
- Python 网络编程说明
一.网络知识的一些介绍 socket 是网络连接端点.例如当你的Web浏览器请求www.jb51.net上的主页时,你的Web浏览器创建一个socket并命令它去连接 www.jb51.net的Web ...
- Ubuntu一些配置和技巧
安装google-chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb sudo d ...
- mysq Point类型 查询和插入操作:insert和select
首先,创建一个表名为geometry2的表,然后增加一个名为gemo的point类型的字段. insert方法有4中,例如以下所看到的://============================== ...
- C#面向对象2 静态类、静态成员的理解
理解:静态成员属于类所有,为各个类的实例所公用,与实例无关,需要全局共享的属性或者方法定义成静态的 C#静态成员: 1.静态成员属于类所有,故用类名调用,非静态成员属于类的实例所有,用实例名调用 ...