c#中无法加载64位dll错误

Unable to load 64-bit dll Error in C#

本文关键字:64位 dll 错误 加载      更新时间:2023-10-16

我有64位的c++ ddl,我必须在我的c#应用程序中使用。我用了

[DllImport("sampleDll.dll",
    EntryPoint = "sampleFunction",
    CharSet = CharSet.Ansi,
    CallingConvention = CallingConvention.StdCall)]
    public static extern int sampleFunction(char[] ch, int i);

但是当我尝试运行应用程序时,它显示错误为

"无法加载DLL 'sampleDll.dll':无法找到指定的模块。"

我使用64位操作系统。我尝试通过将dll复制到System32文件夹

但是我仍然得到相同的错误。

请让我知道这个问题的解决方法........

我假设你的c#进程是64位的。如果它是一个32位的进程,那么你不能加载64位的DLL,这就是失败的原因。

如果您将文件复制到system32,那么64位进程将在那里查找。如果您复制的文件名为sampleDll.dll,那么您的程序将找到它。所以,如果你看到

<>之前无法加载DLL 'sampleDll.dll':无法找到指定的模块。之前

问题不在于无法定位sampleDll.dll,而在于无法解决其依赖关系。最常见的解释是,您需要安装sampleDll.dll所依赖的C运行时。请查阅该DLL的文档,了解它的依赖项。如果它是您自己创建的DLL,那么您就知道在构建它时使用了什么,并且可以自己识别依赖关系。

最后,我要强调您不应该将文件复制到system32目录中。那是属于系统的,你不应该碰它。DLL的最佳驻留位置是与加载它的可执行文件在同一目录中。

将dll放在部署应用程序的同一文件夹中。