找不到指定的模块 - 64位dll

时间:2009-06-04 09:08:12

标签: c# c++ c dll dllimport

当我尝试使用VC ++(VS2008)编译以通过更改它编译的平台将dll转换为x64时,我使用了Native C编写了32位dll。但是当我试图从我的C#应用​​程序(也是'x64'平台)访问dll时,它无法加载dll。我使用Dllimport将dll链接到我的应用程序。

我在Vista中使用的操作系统,但我无法从我的应用程序调用at dll函数,它说无法加载dll。

有没有办法解决这个问题。

期待你的帮助。

此致 GA

5 个答案:

答案 0 :(得分:0)

我的猜测是依赖项,你的新DLL可能有一些它需要的64位DLL。

答案 1 :(得分:0)

尝试工具“依赖性沃克”(类似于ldd的工具,www.dependencywalker.com),找出与什么相关的链接。可能会有帮助。

答案 2 :(得分:0)

检查你在哪里构建dll的不同版本(x86 / x64)。

最简单的方法是将64位dll的目标目录设置为目标文件夹的“x64”子目录。在64位解决方案配置中,将C#的目标目录设置为“x64”目录。

这将确保每个平台的exe尝试加载正确的dll。

答案 3 :(得分:0)

感谢您的帮助。

当我将dll放在C:\ Windows \ System32 \下时,错误已解决。

谢谢, GA

答案 4 :(得分:-1)

我在这些方面遇到过一次问题。我有一个C ++ DLL作为一个硬件的接口,我需要从C#调用。但是,如果没有插入硬件,它将无法通过DllImport调用。这是因为DLL初始化函数返回失败,所以C#只是说它无法加载DLL,它可能与那里没有关系DLL是。

在C代码中设置DLL时,请检查是否没有引起某种错误。