首页 > 其他分享 >关于动态调用类库的一点实践

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

时间:2024-03-27 16:24:01浏览次数:16  
标签:类库 调用 DllImport System Environment PATH 动态

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

动态链接库搜索顺序

标签:类库,调用,DllImport,System,Environment,PATH,动态
From: https://www.cnblogs.com/GISyunqi/p/18099557

相关文章

  • HTML编程+函数的调用1
    原创:财院网站设计学习平台1.函数无参数<body><inputtype="submit"value="输入显示信息的次数:"onclick="showHello()"/><script>functionshowHello(){varcount=prompt("请输入显示信息的次数:");for(vari=1;i<=count;i++){......
  • 动态规划刷题(算法竞赛、蓝桥杯)--数字三角形(线性DP)
    1、题目链接:[USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷#include<bits/stdc++.h>usingnamespacestd;intr;constintN=1010;inta[N][N];intmain(){ cin>>r; for(inti=1;i<=r;i++){ for(intj=1;j<=i;j++){ cin>>a[i][j]; ......
  • C# 调用迅雷aplayer播放器的遇到的问题总结
    事件的起因是,目前发布的软件版本中,视频播放使用的是腾讯云点播提供的html版本的播放器(我们的视频存放在腾讯云点播上),客户端采用的是.netframework3.5开发的,采用WebBrowser内核加载和其它的一个浏览器内核加载后端的页面,通过传参进行视频播放,这种方式在部分用户电脑是会出现腾讯......
  • 蜗牛(基础动态规划)
    1importjava.util.Scanner;2//1:无需package3//2:类名必须Main,不可修改45publicclassMain{6publicstaticvoidmain(String[]args){7Scannersc=newScanner(System.in);8intn=sc.nextInt();9int[]x......
  • 网络攻防中黑客常用的十大渗透测试演练系统,百款渗透测试工具集合,安卓防逆向、防动态分
    网络攻防中黑客常用的十大渗透测试演练系统,百款渗透测试工具集合,安卓防逆向、防动态分析、渗透测试及加固详细教程。对目标机器进行全面的渗透测试是一个复杂的过程,需要遵循一系列的步骤来确保系统的安全性。以下是一个详细的渗透测试流程,包括关键步骤和一些基本的命令或......
  • Dapr微服务应用开发系列3:服务调用构件块
    原理所谓服务调用,就是通过这个构件块让你方便的通过HTTP或者gRPC协议同步调用其他服务的方法,这些方法也是通过HTTP或者gRPC来暴露的。而方便的含义在于,你无需担心如下问题:如何发现其他服务,不用关心调用的链路以及负载均衡调用过程中如何保证安全性在遇到瞬态错误或中断的时候......
  • 定义和调用传统方法
    publicclassDao{//--------自定义传统方法1------//返回值类型,方法名,形参publicstaticvoidprintBook(Stringname){if(name.equals("孔子")){System.out.println("孔子的代表作《论语》");return;}else......
  • 动态表单校验
    单个的表单域上传递属性的验证规则记录一次动态表单嵌套动态表单,前端必填校验的问题。之前没怎么写过前端代码,看文档也不够仔细~~按常规方法写完页面之后,测试发现校验都加上去了,但是填写内容之后校验也一直在,并且添加的中文校验提示没生效,一直是英文的提示。页面大致长下面......
  • V4L2 ioctl调用流程分析
    学习资料:韦东山第三期 可参考:https://www.cnblogs.com/lethe1203/p/18097351video_device->.fops->v4l2_file_operations->.ioctl_ops->v4l2_ioctl_opsv4l2_ioctl_ops可分为两类:INFO_FL_STD:标准的,无需特殊的代码来处理,APP的调用可以直达这些处理函数I......
  • 代理模式(静态代理和动态代理)
    1.静态代理    静态代理中代理类与被代理类都需要实现同一个接口,这就说明我们的一个静态代理类只能代理一个类,并且还要事先知道我们要代理哪个类才能写代理类,如果我们有其他类还想使用代理那就必须再写一个代理类。【1】测试案例:法外狂徒张三叫律师打官司packageco......