1

我正在开发一个使用一些自定义 32 位 dll 与 USB 设备通信的 C#/WPF 应用程序。它是作为 x86 应用程序开发的,并与 WIX 一起安装。当我在 64 位机器上安装软件包时,程序文件会按照我的预期安装到 Program Files (x86)。

使用 WIX 将 dll 安装到 SystemFolder。在 32 位机器上,这意味着 C:\Windows\System32。在 64 位上,它们最终位于 C:\Windows\SysWOW64。这没关系,但是当我运行我的应用程序时,它无法找到 dll(它通过 [DllImport...] 使用它们)。

那么,让我的应用程序找到 dll 的正确方法是什么,无论它们是在 System32 还是 SysWOW64 中?

谢谢汤姆

4

2 回答 2

1

如果它是默认的 C# 应用程序,它将自动成为 64 位 Windows 上的 64 位应用程序(C3 在 32 位 Windows 上默认为 32 位)。进入您的开发应用程序中的项目属性,并将架构(我认为;我现在没有 Studio)显式设置为 32 位。如果它作为 64 位应用程序运行,它将无法使用您的 32 位 DLL。

于 2012-05-24T09:12:38.180 回答
0

请根据您的windows版本检查应用程序中的dll是否与sys32或wow64文件夹中的dll版本相同。

您可以从 dll 的文件大小中进行检查。

例如:我遇到了这个问题,因为我在 system32 中的 libeay.dll 文件与我在 openssl 应用程序中的 libeay.dll 文件具有不同的 dll。我将 sys32 中的那个复制到 openssl 中,一切正常。

于 2020-01-06T11:35:33.467 回答