当我尝试使用VC ++(VS2008)编译以通过更改它编译的平台将dll转换为x64时,我使用了Native C编写了32位dll。但是当我试图从我的C#应用程序(也是'x64'平台)访问dll时,它无法加载dll。我使用Dllimport将dll链接到我的应用程序。
我在Vista中使用的操作系统,但我无法从我的应用程序调用at dll函数,它说无法加载dll。
有没有办法解决这个问题。
期待你的帮助。
此致 GA
答案 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时,请检查是否没有引起某种错误。