2013-08-25 56 views
1

我在运行C#应用程序(WPF,.Net 4.0,Visual Studio 2010)时遇到了问题,它针对x64并使用64位dll(第三方)。C#.Net X64使用64位DLL时的应用程序崩溃

当我使用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

OS版本:6.1.7601.2.1.0.272.7

区域设置ID:2057

其他信息1:7315

其他信息2:
73159f4fb34892aabcc4ba245f14f64e

附加信息3:d5ec

附加信息4:
d5ec134b8e354c23783e48c0e2e572da

我明白,这是可能的,如果EXE和DLL之间存在不匹配,即EXE是32位和DLL bei 64位或反之亦然。 附加是我的设置的屏幕截图。我没有找到验证/编辑我的x64平台设置的方法。

x64 Project Build Settings screenshot

我开发的计算机是赢Vista的32位和我已经安装了64位编译器。

我有32位目标应用程序使用32位DLL工作确定在32位comupters。 崩溃发生在我运行64位的DLL 64目标应用64位计算机上

我试过dependencywalker,但我不能进一步expland找到任何相关性。

有人可以帮助我这个。

非常感谢 山姆

+0

所以,你试图在x32机器上构建一个x64应用程序? –

+0

是的。那是错的吗?我相信我正在为x64构建as.I在平台目标中选择了这个,但我不知道如何编辑/验证x64平台的设置。 – SamVen

+0

您给了我们一个编译环境的描述,现在给我们描述一下执行环境。什么版本的Windows是,什么版本的.NET被安装? –

回答

2

我终于解决了这个问题。

当我使用微软调试诊断工具(从http://www.microsoft.com/en-gb/download/details.aspx?id=26798)崩溃转储显示加载我的外部DLL或其依赖项时出现问题。然后,我将外部DLL加载到Dependency Walker(http://dependencywalker.com/)中,它显示它无法找到链接到Microsoft VC++的依赖项“msvcp100.dll”。

因此,我安装了Microsoft重新分发的软件包(x64),我的应用程序不再崩溃。

感谢每一位的帮助...

+0

请接受您的答案为正确答案,以便我们轻松看到问题已解决。看[接受答案](http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work)。 ;) – bluish

相关问题