• 本站域名:OceanCoder.cn 若您喜欢本站,请添加至收藏夹!
  • 网站少部分资源来源自网络,如有侵犯您的权益,请联系站长删除!
  • 本站所有文章,除特殊标明外,皆为本人原创,转载请注明出处,谢谢合作!
  • 本站所下载的资源,若无特殊说明,使用统一解压密码:oceancoder.cn
  • 本站已实现布局自适应,支持手机端、pad端访问,欢迎体验
  • 本站部分资源可通过微信公众号留言获取,欢迎体验

在ASP.NET中调用 非托管的C++ DLL文件(使用C++\CLI中转)

ASP.NET OceanCoder 2022-04-07 1143 次浏览 0个评论

一、问题:

asp.net 调用引用 native dll 的 C++/CLI dll 会报错:说是dll或其依赖项找不到。具体原因在于 IIS 只会从系统路径下去查找 native dll,不会查找 Bin 目录下的 native dll。


二、解决办法

(1)C++/CLI项目设置 项目属性 ->【链接器】->【延迟加载的DLL】

image.png

该属性可通过depends软件查看,或者dumpbin查看,只需要找到第一层不在系统目录的的dll即可!

(2)将所有需要的非托管(native)dll拷贝到网站发布目录的bin目录下

(3)添加代码 到 Global.asax 文件

String _path = String.Concat(System.Environment.GetEnvironmentVariable("PATH"), ";", System.AppDomain.CurrentDomain.RelativeSearchPath);
System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process);

image.png


重新发布即可!


【参考】

https://www.jianshu.com/p/cab5520eefb7

https://www.cnblogs.com/yeahgis/archive/2011/11/12/2246341.html

已有 1143 位网友参与,快来吐槽:

发表评论