奇怪的汇编程序......这可能是我的应用程序崩溃的原因吗?

Ton*_*ion 1 c++ vb6 floating-point

我有一个使用VB6 DLL的Windows下的本机C++程序.对于某个操作,C++应用程序在使用该DLL时会出现"浮点精确结果"错误.

当我进入调试并查看汇编程序时,我得到这一行:

75A0FB7C  je          759E8797 
Run Code Online (Sandbox Code Playgroud)

当您将鼠标悬停在最右侧的地址上时,会显示一个工具提示:

1.#INF0000000000
Run Code Online (Sandbox Code Playgroud)

这可能是我收到此错误的原因吗?

有谁知道这是为什么造成的?在VB6 IDE下运行这个VB6 DLL不会产生这样的错误......

Han*_*ant 6

不,这与FPU无关.VB6运行时是ab /使用该浮点异常来实现自己的异常处理.On Error语句,我相信你对它很熟悉.

为什么在地球上他们选择重复使用硬件异常代码一直对我来说是神秘的,这个花絮在Visual Basic设计的15个几年中丢失了.它不是字节,因为FPU由VB6运行时初始化,并且该异常被屏蔽.

Anyhoo,诊断是你的VB6代码崩溃了一个未处理的异常.要了解发生了什么,请确保从VB6调试器运行代码.还要确保检查Debug + Exceptions对话框,Thrown框应该关闭.按F5以正常方式处理异常.之后它应该去kaboom.

来自MarkJ的有用链接:

您通常会看到的另一个例外是c000008f.如果你查看数字,那么你会发现它是一个浮点不精确的结果异常.它在这里使用的含义不同 - 因为我们不生成实际浮点不精确结果异常,所以可以安全地抛出它们来指示正常可捕获类型的VB错误