1、原因:
就是编译工程文件太大,导致堆栈溢出。原始vs默认的编译器是32位,我们设置为64位就可解决部分问题。
具体可能造成的原因可以参考:
错误 C1060 |微软学习 (microsoft.com)
2、解决:
1、需要提前安装cmake,不然在命令没法通过指令运行
2、在命令行,跳到对应的工程文件,如图
3、输入指令:
cmake -G "Visual Studio 17 2022" -A x64 -T host=x64
vs版本对应
Visual Studio 17 2022 = Generates Visual Studio 2022 project files.
Use -A option to specify architecture.
Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Deprecated. Generates Visual Studio 2010
project files. Optional [arch] can be
"Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
4、然后cmake文件会变成如下文件:
5、修改最外层的ZERO_CHECK.vcxproj
5.1 找到PropertyGroup Label="Globals"
5.2 在最后添加<PreferredToolArchitecture>x64</PreferredToolArchitecture>
6、重新生成,编译即可。
先点击全部清理,再点击全部生成。
7、补充:
如果还是报错,可以参考如下报错原因:
如果编译器还发出错误C1076和C3859,请使用 /Zm编译器选项降低内存分配限制。如果降低剩余内存分配,则应用程序可以使用更多堆空间。
如果已经设置了 /Zm选项,请尝试将其删除。堆空间可能已耗尽,因为选项中指定的内存分配限制太高。如果删除 /Zm选项,编译器将使用默认限制。
如果在 64 位平台上进行编译,请使用 64 位编译器工具集。有关信息,请参见如何:在命令行上启用 64 位可视C++工具集。
在 32 位 Windows 上,尝试使用 /3GBboot.ini 开关。
增加 Windows 交换文件的大小。
关闭其他正在运行的程序。
消除不必要的包含文件。
消除不必要的全局变量,例如,通过动态分配内存而不是声明大型数组。
消除未使用的声明。
将当前文件拆分为较小的文件