sundonga 2015-02-03 15:05 采纳率: 83.3%
浏览 27721
已采纳

无法加载 DLL“xxx.dll”: 找不到指定的模块。

我用C#写了一个程序,隐式调用了三个dll,暂且叫A.dll/B.dll/C.dll吧。这三个dll都是自己写的,使用的C++。其中B.dll中也调用了C.dll。现在的问题是在C#生成的exe中使用A.dll和C.dll都可以,但使用B.dll时却出现了下图的报错。
图片说明
1. 网上有说是路径问题,我是把C#和三个dll的项目放在一个解决方案里的,生成路径都设置到了解决方案目录里的Debug目录,所以在引用时都直接写的dll名称,路径应该没问题,因为A.dll和C.dll都可以调用。
2. 网上也有说是我调用的dll引用了其他的dll,我用depends这个工具打开exe看了一下,如下图。首先,他没有依赖我自己写的这三个dll,这个很奇怪,然后提示我没有那8个红色的dll。我把这8个dll从网上下载了都放进exe所在的Debug文件夹下,再运行exe还是不行啊。
图片说明
我看了很多网上这方面的资料,现在还是解决不了,请教大家这究竟应该怎么解决?

  • 写回答

5条回答 默认 最新

  • sundonga 2015-02-04 02:06
    关注

    找到原因了,不是常见的路径和依赖的问题,我仔细的看了一下我的B.dll的程序,发现我定义了一个结构体的指针,还没有给这个指针分配内存的时候就用这个指针来引用结构体内的成员了。奇怪的是编译器竟然没报错,而运行中出错竟然提示的是找不到dll。吸取教训,看来dll本身出错了,也会提示这个找不到dll。也多谢各位前辈的指导,csdn真是个不错的地方。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?