使用64位dll时,C#.Net X64应用程序崩溃
本文关键字:Net X64 应用程序 崩溃 64位 dll 使用 | 更新日期: 2023-09-27 18:29:08
我在运行以x64为目标并使用64位dll(第三方)的C#应用程序(WPF、.Net 4.0、Visual Studio 2010)时遇到问题。
当我运行带有64位dll的64位版本(在64位Win7/WindowsServer2003上)时,问题出现了。应用程序启动正常。但当我点击应用程序上的启动按钮时,应用程序将创建线程并开始与dll交互,线程将在第一次调用dll函数时崩溃/停止。以下是我关闭应用程序时产生的错误。
问题签名:
问题事件名称:APPCRASH
应用程序名称:DelayServer.exe
应用程序版本:1.0.0.0
应用程序时间戳:52092104
故障模块名称:KERNELBASE.dll
故障模块版本:6.1.760.17765
故障模块时间戳:506dcae6
异常代码:e0434352
异常偏移:000000000000 bccd
操作系统版本:6.1.760.1.2.1.0.272.7
区域设置ID:2057
附加信息1:7315
附加信息2:
73159f4fb34892abcc4ba245f14f64e附加信息3:d5ec
附加信息4:
d5ec134b8e354c23783e48c0e2e572da
我知道,如果EXE和DLL之间不匹配,即EXE是32位,DLL是64位,反之亦然,这是可能的。附件是我设置的屏幕截图。我找不到验证/编辑x64平台设置的方法。
x64项目生成设置屏幕截图
我的开发计算机是Win Vista 32位,我安装了64位编译器。
我有32位目标应用程序使用32位dll工作正常的32位通讯器。当我在64位计算机上运行带有64位dll的64位目标应用程序时发生崩溃
我尝试了dependencywalker,但我无法进一步解释以找到任何依赖项。
有人能帮我做这个吗。
非常感谢Sam
我终于解决了这个问题。
当我使用Microsoft调试诊断工具(来自http://www.microsoft.com/en-gb/download/details.aspx?id=26798)崩溃转储显示加载外部dll或其依赖项时出现问题。然后我将我的外部dll加载到Dependency Walker中(http://dependencywalker.com/)它表明它找不到一个链接到Microsoft VC++的依赖项"msvcp100.dll"。
所以我安装了Microsoft可重新分发软件包(x64),我的应用程序不再崩溃。
感谢每一个人的帮助。。。