在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

关于DllImport调用非托管dll出现“无法加载DLL’*.dll’,找不到指定的模块”错误

C# 清风 440℃ 0评论

项目中有短信发送模块,由于SP提供的SDK升级。在项目中需要新增SDK的版本。新版本新增的同时要更新旧版本的Dll引用方式,旧版本之前通过DllImport引用使用绝对路径。地址更换后,在操作短信发送的时候就会报“无法加载DLL’*.dll’,找不到指定的模块”。(相关的DLL已经放到Bin目录下)。

当使用绝对路径或者把相关DLL拷贝到系统目录(C:\WINDOWS\system32)后,此类错误不再出现。虽说问题得以解决,但无论是绝对路径还是把相关DLL放到系统目录,这都不是很好的解决办法。很多服务器是不允许在非网站应用程序下新建文件的。而在网上基本都是三种解决方案,如下:
1、将相关的DLL拷贝到Bin目录下
2、将相关的DLL放到系统目录(C:\WINDOWS\system32)
3、使用绝对路径,例如:E:\dll\xxxx.dll

以上三种解决方案在不同情况下都是可用的。第一种如果网站属于项目应用程序的话是没有任何问题的。第二种和第三种情况无论是项目应用程序,还是网站应用程序都是可以使用的。目前的项目是网站应用程序,所以第一种方法是出现了错误。为了解决DllImport在网站应用程序中引用DLL的问题,新建一个类库项目使用DllImport来进行DLL操作。网站应用程序再通过类库项目引用即可解决这次报错的问题。本身是很简单的问题,结果自己绕了一圈。

 

 

转载请注明:清风博客 » 关于DllImport调用非托管dll出现“无法加载DLL’*.dll’,找不到指定的模块”错误

喜欢 (1)or分享 (0)
支付宝扫码打赏 微信打赏
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址