一、问题:
asp.net 调用引用 native dll 的 C++/CLI dll 会报错:说是dll或其依赖项找不到。具体原因在于 IIS 只会从系统路径下去查找 native dll,不会查找 Bin 目录下的 native dll。
二、解决办法
(1)C++/CLI项目设置 项目属性 ->【链接器】->【延迟加载的DLL】
该属性可通过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);
重新发布即可!
【参考】
https://www.jianshu.com/p/cab5520eefb7
https://www.cnblogs.com/yeahgis/archive/2011/11/12/2246341.html
已有 1907 位网友参与,快来吐槽:
发表评论