小编Oli*_*del的帖子

x86和x64之间的浮点算术的差异

我偶然发现了在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位版本上?

左:x86,右:x64

c c++ floating-point 64-bit visual-studio-2010

10
推荐指数
1
解决办法
6635
查看次数

为什么一些dll静态链接存根库(导入库)这么大?

我注意到在链接到pcl(点云库)时,一些dll存根库有超过10MB,其中dll本身不到这个大小的一半(这些是发布版本!).stub lib不应该只包含最少的信息,以便可以访问dll信息吗?它如何比它们引用的dll文件更大?

与我相关的是,通过链接到大型存根库,我自己的可执行文件的大小也大大增加; 我希望通过使用dll防止的事情.

VS中是否存在更改dll链接器行为的设置,以便将更多或更少的内容放入存根库中?

dll stub visual-studio import-libraries

5
推荐指数
0
解决办法
797
查看次数