我正在开发一个C#/WPF应用程序,它可以使用一些自定义的32位dll与USB设备进行对话。它是作为一个x86应用程序开发的,并与WIX一起安装。当我在64位计算机上安装程序包时,程序文件会像我预期的那样安装到program files (x86)。
使用WIX将dlls安装到SystemFolder。在32位计算机上,这意味着C:\Windows\System32。在64位操作系统上,它们最终位于C:\Windows\SysWOW64。这是可以的,但当我运行我的应用程序时,它无法找到dlls (它通过DllImport使用它们...)。
那么,让我的应用程序找到dlls的正确方法是什么,无论它们是在System32中还是在SysWOW64中?
谢谢汤姆
发布于 2012-05-24 17:12:38
如果它是默认的C#应用程序,它将自动成为64位Windows上的64位应用程序( 32位Windows上的C3默认为32位)。进入您的开发应用程序中的项目属性,并显式地将体系结构(我想;我现在没有Studio )设置为32位。如果它作为64位应用程序运行,它将无法使用你的32位DLL。
发布于 2020-01-06 19:35:33
请检查应用程序中的动态链接库是否与sys32或wow64文件夹中的版本相同,具体取决于您的windows版本。
您可以从dll的文件大小中进行检查。
我遇到这个问题是因为我在system32中的libeay.dll文件与我在openssl应用程序中的libeay.dll文件具有不同的dll。我将sys32中的文件复制到openssl中,一切工作正常。
https://stackoverflow.com/questions/10723511
复制相似问题