gpt4 book ai didi

c++ - 使用 VB6 和 C++ dll 的 MSVBVM60.dll 中的访问冲突

转载 作者:行者123 更新时间:2023-11-30 04:36:41 28 4
gpt4 key购买 nike

我正在调查我正在处理的应用程序的崩溃。 Visual Basic 部分是一个简单的窗体,它创建 PictureBoxes 和按钮。单击按钮时会调用 C+ dll。 PictureBoxes 为 DLL 提供句柄,DLL 使用它们通过 WINAPI 创建窗口并在 OpenGL 中显示。

最初在 PictureBoxes 中创建 View 没问题,并且显示正确,但在重置事件后, View 被销毁并重新创建。这是崩溃发生的时候。

我已经尝试了很多工具,Application verifier、Windbg 和 Debug Diagnostic Tool。Windbg 和 Debug Diagnostic Tool 都指出了这个地方,但是我不知道如何修复它。

不幸的是,我无法控制从 VB6 切换到 VB6。

请点击崩溃日志的链接。

link text (olny 允许发布 1 个链接,但两个日志都可见)

非常感谢任何帮助,

莱昂

最佳答案

来自您的文本文件:

(134c.1344): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=034b0ebc ebx=00000000 ecx=7352e100 edx=00000000 esi=02e6813c edi=02e6813c
eip=7349fdd2 esp=0012fc20 ebp=0012fc44 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202
MSVBVM60!HrMenuHandleMenuCommand+0x3f:
7349fdd2 ffb048010000 push dword ptr <Unloaded_Ed20.dll>+0x147 (00000148)[eax] ds:0023:034b1004=????????
0:000> kb
ChildEBP RetAddr Args to Child
0012fc28 7347e1b9 034b0ebc 00000000 02e92ee8 MSVBVM60!HrMenuHandleMenuCommand+0x3f
0012fc44 7347dc27 034b0ebc 000f144a 00000111 MSVBVM60!_DefWmCommand+0xc7
0012fcb0 734d378a 02e92ee8 000f144a 00000111 MSVBVM60!VBDefControlProc+0xb47
0012fcf0 7347ce03 034b0ebc 000f144a 00000111 MSVBVM60!PixCtlProc+0x57c
0012fd18 7347f800 034b0ebc 000f144a 00000111 MSVBVM60!CommonGizWndProc+0xae
0012fd74 7e418734 000f144a 00000111 00000000 MSVBVM60!StdCtlWndProc+0x232
0012fda0 7e418816 7347f5d1 000f144a 00000111 USER32!InternalCallWinProc+0x28
0012fe08 7e4189cd 00000000 7347f5d1 000f144a USER32!UserCallWinProcCheckWow+0x150
0012fe68 7e4196c7 0012fe90 00000001 0012feb8 USER32!DispatchMessageWorker+0x306
0012fe78 7342a6b0 0012fe90 ffffffff 02e76fec USER32!DispatchMessageA+0xf
0012feb8 7342a627 ffffffff 02e78f8c 02e60000 MSVBVM60!ThunderMsgLoop+0xfd
0012fecc 7342a5c9 02e76fec ffffffff 02e7efcc MSVBVM60!CMsoCMHandler::FPushMessageLoop+0x19
0012fefc 7342a505 02e7efcc ffffffff 0000134c MSVBVM60!SCM::FPushMessageLoop+0xb9
0012ff18 7342a4d0 02e78f88 02e7efcc ffffffff MSVBVM60!SCM_MsoCompMgr::FPushMessageLoop+0x2b
0012ff3c 73423644 ffffffff 0183f558 0078c2bc MSVBVM60!CMsoComponent::PushMsgLoop+0x26
0012ffb8 004013aa 00401ac4 7c817077 0183f558 MSVBVM60!ThunRTMain+0x9b
0012fff0 00000000 004013a0 00000000 78746341 with_debug_info!__vbaS+0xa

你在:MSVBVM60!HrMenuHandleMenuCommand+0x3f

失败的指令:push dword ptr +0x147 (00000148)[eax] ds:0023:034b1004=????????

eax 无效,因此取消引用失败。

我的猜测是您在 Ed20.dll 中有一个菜单处理程序,您正在尝试运行它,但此 dll 已被卸载(如 <Unloaded_Ed20.dll> 所示)。您应该找出原因 1. dll 被卸载或 2. 为什么处理程序在卸载后仍然注册。

关于c++ - 使用 VB6 和 C++ dll 的 MSVBVM60.dll 中的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437954/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com