我偶然发现了在x86和x64的MS VS 2010版本之间完成浮点算术的方式不同(两者都在同一台64位机器上执行).
这是一个简化的代码示例:
float a = 50.0f;
float b = 65.0f;
float c = 1.3f;
float d = a*c;
bool bLarger1 = d<b;
bool bLarger2 = (a*c)<b;
Run Code Online (Sandbox Code Playgroud)
布尔bLarger1始终为false(在两个版本中d都设置为65.0).变量bLarger2对于x64为false,但对于x86为true!
我很清楚浮点算术和圆角效应正在发生.我也知道32位有时使用不同的指令进行浮动操作而不是64位构建.但在这种情况下,我错过了一些信息.
为什么bLarger1和bLarger2之间首先存在差异?为什么它只出现在32位版本上?

我注意到在链接到pcl(点云库)时,一些dll存根库有超过10MB,其中dll本身不到这个大小的一半(这些是发布版本!).stub lib不应该只包含最少的信息,以便可以访问dll信息吗?它如何比它们引用的dll文件更大?
与我相关的是,通过链接到大型存根库,我自己的可执行文件的大小也大大增加; 我希望通过使用dll防止的事情.
VS中是否存在更改dll链接器行为的设置,以便将更多或更少的内容放入存根库中?