我有使用 Native C 编写的 32 位 dll,当我尝试使用 VC++(VS2008)编译以通过更改它编译的平台将 dll 转换为 x64 时。但是,当我尝试从也是“x64”平台的 C# 应用程序访问 dll 时,它无法加载 dll。我使用 Dllimport 将 dll 与我的应用程序链接起来。
我在 Vista 中使用的操作系统,但我无法从我的应用程序中调用 at dll 函数,它说加载 dll 失败。
有什么办法可以解决这个问题。
期待您的帮助。
问候, 嘎
我的猜测是依赖关系,您的新 DLL 可能缺少一些它需要的 64 位 DLL。
尝试使用“dependency walker”工具(类似 ldd 的 win 工具,www.dependencywalker.com)来找出哪些链接与哪些链接。可能会有所帮助。
检查您在哪里构建 dll 的不同版本(x86/x64)。
最简单的做法是将 64 位 dll 的目标目录设置为目标文件夹的“x64”子目录。在您的 64 位解决方案配置中,将 C# 的目标目录也设置为“x64”目录。
这将确保每个平台的 exe 尝试加载正确的 dll。
感谢您的帮助。
当我将 dll 放在 C:\Windows\System32\ 下时,错误已解决。
谢谢,嘎
我曾经在这些方面遇到过问题。我有一个作为硬件接口的 C++ DLL,我需要从 C# 调用它。但是,如果没有插入硬件,则会导致 DllImport 调用失败。这是因为 DLL 初始化函数返回失败,所以 C# 只是说它无法加载 DLL,可能与 where 无关DLL是。
当您在 C 代码中设置 DLL 时,请检查您是否没有导致某种错误。