1

我在运行针对 x64 并使用 64 位 dll(第 3 方)的 C# 应用程序(WPF、.Net 4.0、Visual Studio 2010)时遇到问题。

当我使用 64 位 dll(在 64 位 Win7/WindowsServer2003 上)运行 64 位版本时出现问题。应用程序启动正常。但是当我点击应用程序上的开始按钮时,应用程序创建线程并开始与 dll 交互,线程将在第一次调用 dll 函数时崩溃/停止。以下是我关闭应用程序时生成的错误。

问题签名:

问题事件名称:APPRCASH

应用程序名称: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 项目构建设置屏幕截图

我的开发计算机是 Win Vista 32 位,我安装了 64 位编译器。

我有使用 32 位 dll 的 32 位目标应用程序,在 32 位计算机上工作正常。 当我在 64 位计算机上使用 64 位 dll 运行 64 位目标应用程序时发生崩溃

我尝试了dependencywalker,但我无法进一步解释以找到任何依赖项。

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

非常感谢山姆

4

1 回答 1

2

我终于解决了这个问题。

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

谢谢大家的帮助...

于 2013-09-13T22:38:01.650 回答