【发布时间】:2012-02-29 12:23:35
【问题描述】:
我的程序正在退出,代码为“62097”(或十六进制 0xF291)。 我知道是哪个 DLL 库导致它,我正试图弄清楚它为什么会搞砸。
62097 是什么意思?我怎样才能知道?我在网上查了一下,as far 和 can tell 一样,一般的 Windows 错误代码不会达到 62097。
还有什么其他建议可以解决这个问题吗? 我在引起问题的 DLL 上使用了 Dependency Walker,但除了缺少 IESHIMS.dll、IEFRAME.dll 和 SHLWAPI.dll(我使用 Dependency Walker 时通常会丢失)之外,一切都很好。
有问题的库是我自己编译的第 3 方库 - 很可能我编译不正确 - 我如何判断是否是这种情况?
程序在进入 main() 之前拒绝运行,但前提是我使用从 DLL 导入的类。如果我没有使用 DLL 中的任何内容,程序可以正常启动。
该程序在技术上“正在运行”,但在后台,在代码到达我之前。它不是类的构造函数,因为我尝试过这样做:
dllClass *class = new dllClass;
在执行到达'new'之前发生了同样的事情,所以它不能是具有无限循环或类似东西的构造函数。 它作为一个进程运行,并且不是“没有响应”。
我在 Windows 7 32 位上使用 MinGW。我能做些什么来解决这个问题? 感谢您提供的任何见解;同时,我正在尝试跟进一些可能的想法,希望可以进一步缩小范围。
【问题讨论】:
-
可疑的dll是否有
DllMain?所有二进制文件都是 32 位的吗?除此之外,加载 dll 时执行的一些静态初始化似乎失败了。 -
你可以尝试静态链接到库,而不是把它变成一个 DLL 吗?
-
我将该库编译为使用它的项目的一部分,并且它运行。但是,似乎如果我在启动后过早退出程序,它有时会引发异常。由于它现在是我项目本身的一部分,我可以使用调试器和断点遍历它,并跟踪问题。我不知道为什么我没想早点这样做!感谢您的提示,先生们! =) 我敢打赌,错误代码与跨 DLL 边界抛出异常有关。
-
当尝试分配内存失败时,我得到了这个。
标签: c++ windows mingw error-code