gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:43 28 4
gpt4 key购买 nike

我有 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,那么您的程序将找到它。所以,如果你看到

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

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

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

关于c++ - 无法在 C# 中加载 64 位 dll 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16230796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com