我在运行针对x64并使用64位dll(第三方)的C#应用程序(WPF,.Net 4.0,Visual Studio 2010)时遇到问题。
当我使用64位dll(在64位Win7 / WindowsServer2003上)运行64位版本时,会出现问题。应用程序启动OK。但是当我点击应用程序上的开始按钮,应用程序创建线程并开始与dll交互时,线程将在第一次调用dll函数时崩溃/停止。 下面是关闭应用程序时生成的错误。
问题签名:
问题事件名称:APPCRASH
应用程序名称:DelayServer.exe
应用版本:1.0.0.0
申请时间戳:52092104
故障模块名称:KERNELBASE.dll
故障模块版本:6.1.7601.17965
故障模块时间戳:506dcae6
例外代码:e0434352
异常偏移:000000000000bccd
操作系统版本:6.1.7601.2.1.0.272.7
区域设置ID:2057
其他资料1:7315
附加信息2:
73159f4fb34892aabcc4ba245f14f64e附加信息3:d5ec
附加信息4:
d5ec134b8e354c23783e48c0e2e572da
据我所知,如果EXE和DLL之间存在不匹配,即EXE为32位,DLL为64位,反之亦然。 附件是我的设置的屏幕截图。我没有找到验证/编辑我的x64平台设置的方法。
x64 Project Build Settings screenshot
我的开发计算机是Win Vista 32位,我安装了64位编译器。
我有32位目标应用程序,使用32位dll在32位网络上工作正常。 当我在64位计算机上使用64位dll运行64位目标应用程序时发生崩溃
我尝试过dependencywalker,但我无法进一步解释以找到任何依赖关系。
有人可以帮我解决这个问题。
非常感谢 萨姆
答案 0 :(得分:2)
我终于解决了这个问题。
当我使用Microsoft Debug Diagnostic Tool(来自http://www.microsoft.com/en-gb/download/details.aspx?id=26798)时,崩溃转储显示加载外部dll或其依赖项时出现问题。然后我将我的外部DLL加载到Dependency Walker(http://dependencywalker.com/),它表明它找不到与Microsoft VC ++链接的依赖“msvcp100.dll”。
所以我安装了Microsoft可再发行软件包(x64),我的应用程序不再崩溃。
感谢每一位人士的帮助......