【发布时间】:2016-10-28 19:31:08
【问题描述】:
从 Visual Studio 2012 开始,SSE2 编译选项按“默认”启用。
对我来说,也是时候继续使用该功能了——不再为我的项目手动禁用该标志。
但是,我见过很多这样的程序在不支持 SSE2 的旧处理器上执行时崩溃。
例如见:Visual C++ 2012 cout crashes during run time
所以我想将此 CPU 功能作为先决条件,并在 WIX 中编写一些 Windows 安装程序 InstallCondition。
安装应该取消并阻止用户完成所有安装过程,以便以后发现程序崩溃并且与他的系统不兼容。
有没有指导如何实现这样的InstallCondition?
【问题讨论】:
-
我可以向您推荐一个更好的解决方案:英特尔编译器支持生成两个代码路径。这样,您可以获得性能和兼容性(在代码大小 [和编译器许可证价格] 方面)的好处。
-
64 位二进制文件不需要检查 SSE2 支持;它是架构的基线。你是对的,仍然有足够老的计算机可以想象仍然在使用它们,但不支持 SSE2(AMD Athlon XP 是最新的非 SSE2 CPU。在 Intel 上,它是 Pentium III)。
-
在安装时执行此检查可能不是最佳选择。如果有人在旧计算机上安装,然后在较新的 CPU 上使用相同的安装,那么您就错过了。 SSE2 通常是您放弃并退回到标量 C 而不是手动矢量化的基线,因此您以这种方式失去了很多。 OTOH,增加运行时检查的开销很糟糕。幸运的是,您的 x86-64 二进制文件没有这个问题。
标签: windows wix windows-installer simd sse2