| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> C#的DllImport使用方法详解 -> 正文阅读 |
|
[开发工具]C#的DllImport使用方法详解 |
1. 托管代码与非托管代码在学习DllImport方法之前,先了解下托管代码和非托管代码的概念。 我们编写的C#代码(不只是C#,也包括.net平台上的其他语言,如VB,J#等),首先经过编译器把代码编译成中间语言(IL),当方法被调用时,公共语言运行库CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。 托管代码的源代码在运行时分为两个阶段: ?????
非托管代码,是运行在公共语言运行库环境的外部,直接编译成目标计算机码,由操作系统直接执行的代码,代码必须自己提供垃圾回收,类型检查,安全支持等服务。如需要内存管理等服务,必须显示调用操作系统的接口,通常调用Windows SDK所提供的API来实现内存管理。 托管代码和非托管代码的区别1、托管代码是一种中间语言,运行在CLR上;非托管代码被编译为机器码,运行在机器上。 2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容;非托管代码依赖于平台和语言。 3、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作;非托管代码需要自己提供安全检测、垃圾回收等操作。? 2.Dll文件的使用DLL文件是动态链接库,也叫程序集,是一个包含可由多个程序,同时使用的代码和数据的库。 程序集是在 .NET?公共语言运行库?(CLR) 控制之下运行的逻辑功能单元。程序集实际上是作为 .dll 文件或 .exe 文件存在的。 托管代码生成的DLL文件,可以在VS中直接通过添加引用的方式使用。 非托管代码生成的DLL文件,比如使用C++编写的代码编译生成的DLL,不能在VS中直接引用,可以通过DllImport方法来使用。 3.DllImport的基本使用DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出函数的必要调用信息。 其中,引入到C#中的只能是非托管dll中的方法(或者说函数),而不能是数据(或者说变量) (1)引入命名空间
?(2)创建函数名称
其中: 修饰符static和extern是必不可少的(extern外部修饰符,常与DllImport属性一起使用,用于支持在外部实现方法) 最少要提供包含入口点的dll的名称 (3)DllImportAttribute属性用法
4.DllImport详解DllImport的使用规范:(1)DllImport只能放置在方法声明上。 Dll引用路径? (1)exe运行程序所在的目录 ? (2)System32目录 ? (3)环境变量目录 ? (4)自定义路径,如:DllImport(@"C:\OJ\Bin\Judge.dll") |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:47:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |