1

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

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

有什么办法可以解决这个问题。

期待您的帮助。

问候, 嘎

4

5 回答 5

0

我的猜测是依赖关系,您的新 DLL 可能缺少一些它需要的 64 位 DLL。

于 2009-06-04T09:19:30.047 回答
0

尝试使用“dependency walker”工具(类似 ldd 的 win 工具,www.dependencywalker.com)来找出哪些链接与哪些链接。可能会有所帮助。

于 2009-06-04T09:24:17.150 回答
0

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

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

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

于 2009-06-04T09:59:41.307 回答
0

感谢您的帮助。

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

谢谢,嘎

于 2009-06-04T10:42:22.953 回答
-1

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

当您在 C 代码中设置 DLL 时,请检查您是否没有导致某种错误。

于 2009-06-04T10:42:33.670 回答