SysWOW64中的dll被应用程序找不到

问题描述 投票:1回答:2

我正在开发一个C#/ WPF应用,该应用使用一些自定义的32位dll与USB设备通信。它被开发为x86应用程序,并与WIX一起安装。当我在64位计算机上安装软件包时,程序文件将按我的期望安装到程序文件(x86)中。

dll使用WIX安装到SystemFolder。在32位计算机上,这意味着C:\ Windows \ System32。在64位上,它们最终在C:\ Windows \ SysWOW64中。可以,但是当我运行我的应用程序时,它找不到dll(它通过[DllImport ...]使用它们)。

所以,使我的应用找到dll的正确方法是什么,无论它们是在System32还是SysWOW64中?

谢谢汤姆

wix windows-installer 32bit-64bit dllimport syswow64
2个回答
1
投票

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


0
投票

请检查应用程序中的dll是否与sys32或wow64文件夹中的dll具有相同的版本,具体取决于Windows的版本。

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

例如:我遇到此问题是因为s​​ystem32中的libeay.dll文件具有与openssl应用程序中的libeay.dll文件不同的dll。我将sys32中的一个复制到openssl中,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.