我有dll从二进制文件中读取浮点值,进行简单计算并给出布尔结果。每个文件的长度为8字节,因此变量的类型为double(Visual Studio 2008)。计算非常简单:
if( fA < fB - ( iX * fC ) )
{
return( 1 );
}
else
{
return( 0 );
}
此dll已加载,并且该功能由同一台PC上的2个不同应用程序调用。出于调试原因,从文件读取的值将写入另一个文件,计算被分成几部分并写入文件。每个应用程序输出相同的文件,最终结果一个应用程序给出1,另一个0. Dll用/ MT / fp编译:精确/ Od选项。 有什么想法吗?
答案 0 :(得分:0)
除非你的DLL在不同的体系结构上有不同的路径(例如387路径和SSE路径),否则唯一的可能性是至少有一个应用程序改变了FPU状态。通常,这将是舍入模式,但在387 FPU的情况下,它也可以是指令计算的有效位宽度(“x87可以通过特殊配置/状态寄存器配置为自动舍入到每次操作后单精度或双精度“)。