我有一个由旧应用程序动态加载的 Native C Dll。此 dll 的目的是允许基于某些应用程序事件覆盖应用程序行为。我有一个 C# dll,其中包含我通过混合模式 C++/CLI dll 从本机 C dll 调用的函数,以增强这些应用程序事件。使用这种架构的应用程序可以在 Windows 2000 上完美运行。
该应用程序也可以在 Windows XP 上运行,但不幸的是,一旦在应用程序启动时加载了 Native C dll,应用程序就会崩溃(未处理的异常)。它似乎在尝试加载混合模式 dll 时崩溃。我已经从 Native C dll 中删除了对混合模式 dll 的所有依赖项,并且应用程序可以正常启动。但是一旦添加了依赖项,就会发生崩溃。Windows 2000 上的代码与 Windows XP 上使用的代码相同。我无权访问应用程序代码,但可以访问本机 C dll 代码,但无法让调试器停止,因为在初始化完成之前发生崩溃。我怀疑这与 CLR 初始化和操作系统加载程序差异有关,但不确定。我正在寻找有关如何解决此问题的建议。我正在使用 VS2005 使用 2。0 框架。感谢您提供的任何帮助。
异常和堆栈跟踪并没有真正的帮助:
MyApplication.exe 中 0x775125f6 处未处理的异常:0xC0000005:访问冲突读取位置 0x775125f6。
775125f6()
user32.dll!7e418734()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!7e418816()
user32.dll!7e428ea0()
user32.dll!7e42ce7c()
ntdll.dll!7c90e473()
user32.dll!7e42e389()
...