目录:
定义-DllImport属性是什么意思?
DllImport属性是C#中使用的声明性标记,用于将类方法标记为在外部动态链接库(DLL)中定义,而不是在任何.NET程序集中定义。
DllImport属性在运行时用于调用用非托管代码实现的外部DLL中导出的函数,该DLL是在公共语言运行时(CLR)的控制范围之外执行的。 它还用于指定调用函数时所需的其他信息,例如调用约定,在托管代码和非托管代码之间传递的参数的转换类型等。因此,它用于与驻留在Windows中的非托管和旧版组件中的代码进行互操作DLLs是用C或C ++编写的。
DllImport在只能通过访问和重用Win32应用程序编程接口(API)以及其他已实现的用户定义的非托管代码的功能来扩展由CLR执行的托管应用程序的功能的情况下很有用。在DLL中。 这样可以节省开发工作,并利用现有的健壮和经过良好测试的代码,而无需费心管理托管应用程序。 使用无法重写但具有修改能力的DLL时通常需要使用它。
Techopedia解释了DllImport属性
DllImport属性是用于从托管应用程序调用的导出函数的声明语句。 它不能用于需要类实例的成员函数。 它是在设计时在声明所应用方法之前在方括号内指定的。 在函数声明之前必须使用字符串“ extern”。
例如,可以在Windows窗体应用程序中使用DllImport属性,该窗体是一个受管应用程序,用于调用组件对象模型组件(其代码不受管理)的方法以执行某些计算。
它旨在导入使用原始Windows DLL导出机制导出其功能的传统DLL。 它不适用于托管程序集(如DLL)中的代码,可以在托管应用程序的项目中直接引用该代码。
DllImport属性使用CLR的InteropServices,该服务执行从托管代码到非托管代码的调用。 它还会通知编译器所用函数的实现位置。 调用具有托管代码中此属性的非托管包装器函数时,CLR将定位并加载必要的DLL。 它封送(按照规范转换参数)并在执行后返回非托管代码以及正确的参数转换。
在使用DllImport属性时,需要注意使用DLL和导出函数的正确名称,因为错别字可能发生在无法轻易检测到的地方。
