如何通过静态链接到VC运行时库来构建非MFC C ++项目?

时间:2018-07-06 21:29:02

标签: c++ visual-studio windows-7 msvcrt

我知道对于使用Visual Studio构建的MFC项目,可以转到项目属性,然后依次Configuration Properties-> General-> use of MFC并将其更改为{{1 }}:

enter image description here

如果生成的版本必须在Windows的早期版本中运行而无需安装MFC或VC运行时DLL,则此方法有效。自Windows 7及更高版本开始,生成的版本将使用Windows的每个安装中已经存在的DLL。 (甚至可能降至Windows XP。)

现在,如果我创建一个非MFC项目,例如一个测试C ++控制台应用程序,则使用MFC的设置将配置为“使用标准Windows库”:

enter image description here

但是,如果运行生成的二进制文件,例如在全新安装的Windows 7上,则会出现此错误:

enter image description here

因此,在深入研究设置之后,我找不到通过静态链接到所有这些较新版本VC RT库的静态编译方式。在那儿,我只是看不到?

PS。深入研究之后,我发现可以将“平台工具集”更改为Use MFC in a static library,并假定它可以与Windows XP及更高版本向下兼容:

enter image description here

但是如果我编译它,就会出现以下错误:

Visual Studio 2017 - Windows XP (v141_xp)

1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\objbase.h(239): error C2760: syntax error: unexpected token 'identifier', expected 'type specifier' 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(1540): warning C4091: 'typedef ': ignored on left of '' when no variable is declared 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(3056): warning C4091: 'typedef ': ignored on left of '' when no variable is declared 文件的这一部分中,这与我刚刚从Visual Studio模板创建的测试C ++控制台项目无关:

enter image description here

所以我的问题是-我可以构建一个可以在较旧版本的Windows上运行而无需安装VC Runtime或任何其他附加库的非MFC C ++项目吗?

1 个答案:

答案 0 :(得分:0)

转到C / C ++->代码生成。将Runtime library设置为Multi-threaded /MT而不是Multi-threaded Dll /MD