我知道对于使用Visual Studio构建的MFC项目,可以转到项目属性,然后依次Configuration Properties
-> General
-> use of MFC
并将其更改为{{1 }}:
如果生成的版本必须在Windows的早期版本中运行而无需安装MFC或VC运行时DLL,则此方法有效。自Windows 7及更高版本开始,生成的版本将使用Windows的每个安装中已经存在的DLL。 (甚至可能降至Windows XP。)
现在,如果我创建一个非MFC项目,例如一个测试C ++控制台应用程序,则使用MFC的设置将配置为“使用标准Windows库”:
但是,如果运行生成的二进制文件,例如在全新安装的Windows 7上,则会出现此错误:
因此,在深入研究设置之后,我找不到通过静态链接到所有这些较新版本VC RT库的静态编译方式。在那儿,我只是看不到?
PS。深入研究之后,我发现可以将“平台工具集”更改为Use MFC in a static library
,并假定它可以与Windows XP及更高版本向下兼容:
但是如果我编译它,就会出现以下错误:
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 ++控制台项目无关:
所以我的问题是-我可以构建一个可以在较旧版本的Windows上运行而无需安装VC Runtime或任何其他附加库的非MFC C ++项目吗?
答案 0 :(得分:0)
转到C / C ++->代码生成。将Runtime library
设置为Multi-threaded /MT
而不是Multi-threaded Dll /MD