C#调用dll报错:无法加载dll,找不到指定模块的解决

C#调用dll报错:无法加载dll,找不到指定模块

最近在做一个swmm模型的项目,在swmm源码上进行改写了两个函数,结果调用的时候就报错了,C#报错之说找不到指定模块,就是不说具体问题,在网上排查了很久,在这里记录一下。

如果确定自己的dll函数 没有问题的话,那可能就是你这个dll需要依赖其它的dll,而你的系统正好缺失了某些dll,所以运行就报错了,在网上看要下载Depends,查看缺少什么依赖,结果我一查,好家伙,一大串,照它这个逻辑,我得一个个下载缺失的dll,补回去,问题是我之前还调用过其它dll,那些dll能运行,但是放到Depends中查看依赖,依然报错一大堆,所以我就没按照这种方法来。

后来我下载了eXeScope,在这里查看dll信息,如下图:

C#调用dll报错:无法加载dll,找不到指定模块的解决_第1张图片

导出项为这几个函数,我调用的也是这几个函数,说明没有调用错。

C#调用dll报错:无法加载dll,找不到指定模块的解决_第2张图片

而导入项需要依赖这两个dll,所以我就尝试在System32中找到这两个dll(没有的去网上下载),拷贝到项目debug里面,就可以成功运行了

C#调用dll报错:试图加载格式不正确的程序

这个上网查了一下,网上说是:

所以我找了一下,发现我的VS里面C#没有的设置64还是86,最后找到了,操作如下截图:

C#调用dll报错:无法加载dll,找不到指定模块的解决_第3张图片

 C#调用dll报错:无法加载dll,找不到指定模块的解决_第4张图片

 C#调用dll报错:无法加载dll,找不到指定模块的解决_第5张图片

再去选择配置管理器,就有了64和86。选择自己调用DLL的类型是32还是64再去选择运行时是86还是64,就不会报错了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(C#调用dll报错:无法加载dll,找不到指定模块的解决)