1

我有 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 文件夹中

但我仍然遇到同样的错误。

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

4

2 回答 2

2

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

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

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

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

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

于 2013-04-26T07:25:36.823 回答
-1

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

于 2013-04-26T07:25:14.453 回答