由于应用需求,需要调用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时,只需要指定类库名称即可。