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

Posted on 2024-03-27 16:11  云起  阅读(2)  评论(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时,只需要指定类库名称即可。

动态链接库搜索顺序

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