繁体   English   中英

无法在C#中加载64位dll错误

[英]Unable to load 64-bit dll Error in C#

我有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':找不到指定的模块。”

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

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

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

我将假设您的C#进程是64位。 如果是32位进程,则无法加载64位DLL,这就是失败的原因。

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

Unable to load DLL 'sampleDll.dll': The specified module could not be found.

问题不在于无法sampleDll.dll ,而是无法解决其依赖性。 对此的最常见解释是,您需要安装sampleDll.dll依赖的C运行时。 请查阅此DLL的文档,以了解其依赖性。 如果它是您自己创建的DLL,则您知道构建它时使用的内容,并且可以自己识别依赖项。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM