我有一个本地的C Dll,由一个老旧应用程序动态加载。这个dll的目的是基于某些应用程序事件允许覆盖应用程序行为。我有一个包含函数的C# dll,通过混合模式的C++/CLI dll从本地C dll中调用这些函数来增强这些应用程序事件。使用此架构的应用程序在Windows 2000上完美运行。
该应用程序也可以在Windows XP上运行,但不幸的是,在本地C dll在应用程序启动时被加载后,应用程序会崩溃(未处理的异常)。看起来当它尝试加载混合模式dll时会崩溃。我已经从本地C dll中删除了所有对混合模式dll的依赖项,并且应用程序可以正常启动。但是一旦添加了依赖项,就会发生崩溃。Windows 2000上的代码与在Windows XP上使用的代码相同。我无法访问应用程序代码,但可以访问本地C dll代码,但无法使调试器停止,因为崩溃发生在初始化完成之前。我怀疑这与CLR初始化和OS加载程序之间的差异有关,但不确定。我正在寻找解决此问题的建议。我正在使用VS2005使用2.0框架。非常感谢您能给出的任何帮助。
异常和堆栈跟踪并不真正有用:未处理的异常位于0x775125f6处,MyApplication.exe中读取位置0x775125f6时发生访问冲突。
该应用程序也可以在Windows XP上运行,但不幸的是,在本地C dll在应用程序启动时被加载后,应用程序会崩溃(未处理的异常)。看起来当它尝试加载混合模式dll时会崩溃。我已经从本地C dll中删除了所有对混合模式dll的依赖项,并且应用程序可以正常启动。但是一旦添加了依赖项,就会发生崩溃。Windows 2000上的代码与在Windows XP上使用的代码相同。我无法访问应用程序代码,但可以访问本地C dll代码,但无法使调试器停止,因为崩溃发生在初始化完成之前。我怀疑这与CLR初始化和OS加载程序之间的差异有关,但不确定。我正在寻找解决此问题的建议。我正在使用VS2005使用2.0框架。非常感谢您能给出的任何帮助。
异常和堆栈跟踪并不真正有用:未处理的异常位于0x775125f6处,MyApplication.exe中读取位置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()
...