关于动态调用类库的一点实践

Posted on   云起  阅读(4)  评论(0编辑  收藏  举报

由于应用需求,需要调用C的类库,本来是用[DllImport]中绝对路径的方式引入就行,但无奈该类库还有其他类库,也并非自己的程序提供,所以还是想采用动态的方式进行引入。

Tips:由于是C的类库,不能采用Assembly.Load的方式,会抛出System.BadImageFormatException:“Bad IL format“异常。

DllImportAttribute并未提供路径指向的方式,所以最后想通过dll搜索顺序来进行调整。

DllImportAttribute 类 (System.Runtime.InteropServices) | Microsoft Learn

在程序入口,修改当前进程的系统变量,将第三方路径添加进来,用于dll搜索

var path = Environment.GetEnvironmentVariable("PATH");
Environment.SetEnvironmentVariable("PATH", path += @"第三方路径;");

在使用DllImport时,只需要指定类库名称即可。

动态链接库搜索顺序

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

随笔 - 119, 文章 - 0, 评论 - 3, 阅读 - 4016

Copyright © 2025 云起
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示