C#.Net X64使用64位dll时应用程序崩溃

时间:2013-08-25 23:34:48

标签: c# visual-studio-2010 dll 64-bit

我在运行针对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,但我无法进一步解释以找到任何依赖关系。

有人可以帮我解决这个问题。

非常感谢 萨姆

1 个答案:

答案 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),我的应用程序不再崩溃。

感谢每一位人士的帮助......