我有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文件夹
但我仍然得到同样的错误。
请让我知道此问题的解决方法........
答案 0 :(得分:2)
我将假设你的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驻留的最佳位置与加载它的可执行文件位于同一目录中。
答案 1 :(得分:-1)
将您的dll放在部署应用程序的同一文件夹中。