Microsoft Visual Studio 开发的C++程序软件发布相关事宜

VS2005/VS2008软件发布:

  Debug版本:

    非MFC程序:

      编译选项mdd:

        仅依赖C++库和C运行时库,需要到VS2005/VS2008下安装目录VC/redist/Debug_NonRedist中,找到Microsoft.VC90.DebugCRT目录,其中的清单文件*.manifest中内容对应依赖库文件msvcp90d.dll和msvcr90d.dll;前者为C++库,后者为C运行时库;此外还有一个msvcm90d.dll库,项目中一般也会用到;对于清单文件,若VS配置属性中生产exe未嵌入清单文件(工程属性下manifest Tool清单工具中Input and Output输入输出中可配置是否嵌入exe),则运行时需要单独提供以上的清单文件和依赖库库文件,否则只需要提供相应的依赖库文件即可;

        若程序依赖第三方动态库,则还需要提供依赖的第三方库文件。

        此外还需要目标机器有msvcrtd.dll库;

      编译选项mtd:

        不需要依赖C++库和C运行时库,因其已静态连接至exe,也即静态连接libcmtd.lib(位于VC/lib目录下);

        此外若程序依赖第三方库,则还需要提供依赖的第三方库文件(无论动态库或静态库)(一般情况下建议均选择同一种编译选项,不同编译选项可能导致编译冲突)。

    MFC程序:

      动态链接至MFC库时:

        除了需要以上非MFC在不同编译选项外,还需要提供以下对应MFC支持的依赖库文件;

        到VS2005/VS2008下安装目录VC/redist/Debug_NonRedist中,找到Microsoft.VC90.DebugMFC目录,其中的清单文件*.manifest中内容对应依赖库文件mfc90d.dll、mfccm90d.dll以及相应的unicode版本依赖库文件;同样的对于清单文件,若VS配置属性中生产exe未嵌入清单文件,则运行时需要单独提供以上的清单文件和依赖库库文件,否则只需要提供相应的依赖库文件即可;

      静态链接至MFC库时:

        此时不再需要提供以上的清单文件和依赖库;只需要以上非MFC在不同编译选项下情况即可;

  Release版本:

    非MFC程序: 

      编译选项md:

        仅依赖C++库和C运行时库,需要到VS2005/VS2008下安装目录VC/redist/x86或amd64中,找到Microsoft.VC90.CRT目录,其中的清单文件*.manifest中内容对应依赖库文件msvcp90.dll和msvcr90.dll;前者为C++库,后者为C运行时库;此外还有一个msvcm90.dll库,项目中一般也会用到;对于清单文件,若VS配置属性中生产exe未嵌入清单文件,则运行时需要单独提供以上的清单文件和依赖库库文件,否则只需要提供相应的依赖库文件即可;

        若程序依赖第三方动态库,则还需要提供依赖的第三方库文件。

        此外还需要目标机器有msvcrt.dll库;

      编译选项mt:

        不需要依赖C++库和C运行时库,因其已静态连接至exe,也即静态连接libcmt.lib(位于VC/lib目录下);

        此外若程序依赖第三方库,则还需要提供依赖的第三方库文件(无论动态库或静态库)(一般情况下建议均选择同一种编译选项,不同编译选项可能导致编译冲突)。

    MFC程序: 

      动态链接至MFC库时:

        除了需要以上非MFC在不同编译选项外,还需要提供以下对应MFC支持的依赖库文件;

        到VS2005/VS2008下安装目录VC/redist/x86或amd64中,找到Microsoft.VC90.MFC目录,其中的清单文件*.manifest中内容对应依赖库文件mfc90.dll、mfccm90.dll以及相应的unicode版本依赖库文件;同样的对于清单文件,若VS配置属性中生产exe未嵌入清单文件,则运行时需要单独提供以上的清单文件和依赖库库文件,否则只需要提供相应的依赖库文件即可;

      静态链接至MFC库时:

        此时不再需要提供以上的清单文件和依赖库;只需要以上非MFC在不同编译选项下情况即可;

  除了以上的方式外,对于release版本,还可以安装相应版本的vcredist(一套VC++应用程序需要的组件库(事实上保护了release下的需要的各个依赖库而已)),注意vcredist分为32和64位版本,此外还要注意VS2008和VS2008的sp1时的vcredist版本不一样的,应根据应用程序的情况安装对应版本;

  对于某些情况,若在vs2008 sp1下开发时,此时以上的清单文件和依赖库或者是vcredist需要提供对应版本;

  VS2010以及其后的更高级版本,不再提供清单文件,不过若应用程序依赖了vs2005或VS2008开发的库或目标文件(obj),则仍然需要清单文件或内嵌exe的清单文件和对应的VS2005或VS2008的运行时依赖库(含C++/C的运行库,若为MFC库则还需要对应的MFC依赖库);虽然VS2010以及其后的更高级版本开发的库或exe可不再提供清单文件,不过仍然依赖对应的运行时库;

  打包程序时候,无论是debug或者release(一般打包发布为release版本)时,可结合“开发工具”分类文章中提到的dependency walker和sxstrace工具查看程序依赖库或其他依赖的第三方库或者运行异常时的日志信息逐步解决依赖问题或是其他的异常问题;此外也可以采用vs提供的安装和部署工具打包集成net framework运行时库等(可以很好的处理、打包各个依赖库或运行时环境)、还可以采用NSIS或其他第三方打包工具;

  简述:

    若编译选项为mt/mtd则不需要提供C++/C的运行时库依赖;

      若编译连接静态库至MFC;则不需要提供MFC的运行时库依赖;

    以上前提条件是exe以及其依赖的所有的库不依赖任何运行时库的前提下,若有一个依赖,则应用程序将会依赖对应的运行时库;

    为了避免编译冲突,所有开发的库或依赖库应统一使用某一个编译选项CRT运行库依赖;

时间: 2024-08-10 00:06:09

Microsoft Visual Studio 开发的C++程序软件发布相关事宜的相关文章

Windows 7中,用Visual Studio开发WPF应用程序,实现从Windows Explorer中拖拽文件到应用程序,始终显示“无法拖放”符号问题解决方案

Are you running your application or Visual Studio that hosts the app under administrative privilege? If that's the case, the Windows prevents the drag drop operation from happening. In Windows 7 or Vista, an application with a lower security privileg

Microsoft Visual Studio 文件识别及其用途简述

Microsoft Visual Studio IDE开发工具集,目前已推出多个不同版本,从之前的VC4.0到现在的VS2015,各个版本都会或多或少的功能或性能上的修改.提升,具体的改进地方可去官网了解:但无论如何,其始终只是一个开发工具,帮助开发人员快速.高效地完成工作,合理而有效的利用开发工具便成为利器,较为旧版本的VS IDE可以认为淘汰了:故以下针对VS2008.VS2010至VS2015等版本进行的VC++开发等相关了解.学习: 部分文件识别: VS2008 新建项目后会产生相应的文

【C++】笔记一:Microsoft Visual Studio 2010软件的安装与建立第一个cpp文件

笔记一:Microsoft Visual Studio 2010软件的安装与建立第一个cpp文件 我学习C++使用软件为Microsoft Visual Studio 2010. 首先,软件的安装包 链接:https://pan.baidu.com/s/1kW3ChL1 密码:lg9p 下载软件并安装不多说. 新建项目 第一步,打开Microsoft Visual Studio 2010 第二步,依次选择[文件]--[新建]--[项目] 第三步,选择[Visual C++]-- [Win32控制

visual studio 开发linux程序

VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb  ,这2个都是商业软件.) Visual GDB把GDB调试工具集成到visual studio 开发环境中,在调试过程中,可以使用visual studio原有的单步执行.设定断定等快捷键,还可以在visual GDB session的窗口中输入GDB的调试命令,集成了visualGDB之后还可以在程序执行的过程中用鼠标悬停的方式查看和修改变量

Microsoft Visual Studio 2015 下载、注册、安装过程、功能列表、问题解决

PS:请看看回复.可能会有文章里没有提到的问题.也许会对你有帮助哦~ VS2015正式版出了,虽然没有Ultimate旗舰版,不过也是好激动的说.哈哈.可能有的小伙伴,由于工作环境不允许.或者害怕有什么问题.所以不敢安装vs2015.只能眼巴巴地干瞅着. 因此,我决定,冒一次重装系统的风险,试着安装一下,正好也试试什么序列号能用.希望这次牺牲能值得~~呵呵. 下载地址:Microsoft Visual Studio 2015 全版本+离线MSDN+全部插件 赶紧下载,打开,发现VS2015对安装

Microsoft Visual Studio International Pack 1.0 SR1--关于汉字转拼音

Microsoft Visual Studio International Pack 1.0 SR1————微软的一个类库 地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=15251 Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持.使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用.SR1 包含对 Ja

【转】[Microsoft Visual Studio 6.0 Enterprise]Visual C++ 6.0原版光盘下载

Visual C++ 6.0可以说是初学者的最佳伴侣,简单易上手!百度一下,到处都是精简版的,或者汉化版的,我一直有种强迫症,就只喜欢原版的,知道一周以前,我才找到.希望分享(在这里要特别感谢前辈原作者的分享,谢谢他!)给一样在学习编程的朋友们,祝大家学习进步! 另 外说一下,如果你是计算机类专业的建议使用原版的,不要汉化的,也许上面英文有些地方看不懂,但是你可以慢慢适应,一来,这有助于提高你的英文水平,一定 的英文水准对这个专业其实还是必须的,这个专业比较前沿的东西都是英文写的,也起源于西方,

Microsoft Visual Studio 发展历史

Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows.Windows Mobile.Windows CE..NET Framework..NET Compact Framework和Microsoft Silverlight 及Windows P

Microsoft Visual Studio 2008安装教程

Microsoft Visual Studio 2008安装包链接:https://pan.baidu.com/s/1nwRnWj3 密码:s00k①解压安装包后得到后缀为.iso的镜像文件,解压: ②解压后找到安装启动程序setup.exe,双击: ③双击后进入安装界面,选择第一个安装Visual Studio 2008,进入下一步: ④短暂加载完成后,点击下一步(这里我们可以不用勾选发送安装体验信息): ⑤在起始页进行程序所需组件的安装,要先退出所有应用程序才能开始进行安装,同时选择"我已阅