VB6 和 C++ MSVBVM60.dll 中的访问冲突动态链接库
我正在调查我正在开发的应用程序崩溃的情况。视觉基础部分是一个简单的表单,它创建图片框和按钮。单击按钮即可调用 C+ dll。 PictureBox 提供了 DLL 的句柄,DLL 使用它们通过 WINAPI 创建窗口并在 OpenGL 中显示。
最初,在 PictureBox 中创建视图没有问题,并且可以正确显示,但是在发生重置事件时,视图将被销毁并重新创建。这就是崩溃发生的时候。
我尝试过很多工具,应用程序验证器、Windbg 和调试诊断工具。 Windbg和调试诊断工具都指向这个地方,但我不知道如何修复它。
不幸的是,从 VB6 切换对我来说不是一个选择,因为它超出了我的控制范围。
请点击崩溃日志的链接。
链接文本(olny 允许发布 1 个链接,但两个日志都可见)
非常感谢任何帮助,
Leon
I am investigating a crash of an application I am working on. The visual basic part is a simple form, which creates PictureBoxes and buttons. Calls are made to the C+ dll upon button clicks. The PictureBoxes provide handles to the DLL which uses them to create windows using WINAPI and displays in OpenGL.
Initially views are created in the PictureBoxes no problem, and are displayed correctly, but upon a reset event, the views are destroyed and recreated. This is when the crash happens.
I have tried numerous tools, Application verifier, Windbg, and Debug Diagnostic Tool.
Both Windbg and Debug Diagnostic Tool point to the place, however I dont know how to fix it.
Unfortunately, switching from VB6 is not an option for me as it is out of my control.
Please follow the links to crash logs.
link text (olny allowed to post 1 link, but both logs are visible)
Any help greatly appreciated,
Leon
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从您的文本文件:
您位于:MSVBVM60!HrMenuHandleMenuCommand+0x3f
执行的指令:push dword ptr +0x147 (00000148)[eax] ds:0023:034b1004=?????????
eax 无效,因此解引用失败。
我的猜测是,您在 Ed20.dll 中有一个菜单处理程序,您正在尝试运行该菜单处理程序,但该 dll 已被卸载(如
所示)。您应该找出原因 1. dll 被卸载或 2. 为什么处理程序在卸载后仍然注册。From you text file:
You were in: MSVBVM60!HrMenuHandleMenuCommand+0x3f
The instruction that fialed: push dword ptr +0x147 (00000148)[eax] ds:0023:034b1004=????????
eax is invalid, thus the derefernce failed.
My guess is that you have a menu handler in Ed20.dll which you are trying to run, but this dll has been unloaded (as indicated by the
<Unloaded_Ed20.dll>
). You should find out why 1. the dll was unloaded or 2. Why handler is still registered after the unload.