DllImportAttribute 类
指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。
**命名空间:**System.Runtime.InteropServices
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
<AttributeUsageAttribute(AttributeTargets.Method, Inherited:=False)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class DllImportAttribute
Inherits Attribute
用法
Dim instance As DllImportAttribute
[AttributeUsageAttribute(AttributeTargets.Method, Inherited=false)]
[ComVisibleAttribute(true)]
public sealed class DllImportAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, Inherited=false)]
[ComVisibleAttribute(true)]
public ref class DllImportAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Method, Inherited=false) */
/** @attribute ComVisibleAttribute(true) */
public final class DllImportAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Method, Inherited=false)
ComVisibleAttribute(true)
public final class DllImportAttribute extends Attribute
备注
可将该属性应用于方法。
DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入口点的 DLL 的名称。
可直接将此属性应用于 C# 或 C++ 方法定义;但在使用 Declare 语句时,Visual Basic 编译器会忽略此属性。对于包含 BestFitMapping、CallingConvention、ExactSpelling、PreserveSig、SetLastError 或 ThrowOnUnmappableChar 字段的复杂方法定义,可直接将此属性应用于 Visual Basic 方法定义。
注意 JScript 不支持此属性。可以使用 C# 或 Visual Basic 包装类从 JScript 程序访问非托管 API 方法。
有关使用平台调用服务访问非托管 DLL 中的函数的其他信息,请参见 使用非托管 DLL 函数。
提示
DllImportAttribute 不支持泛型类型的封送处理。
示例
下面的代码示例演示如何使用 DllImportAttribute 属性导入 Win32 MessageBox 函数。然后,代码示例将调用导入的方法。
Imports System
Imports System.Runtime.InteropServices
Module Example
' Use DllImport to import the Win32 MessageBox function.
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Function MessageBox(ByVal hwnd As IntPtr, ByVal t As String, ByVal caption As String, ByVal t2 As UInt32) As Integer
End Function
Sub Main()
' Call the MessageBox function using platform invoke.
MessageBox(New IntPtr(0), "Hello World!", "Hello Dialog", 0)
End Sub
End Module
using System;
using System.Runtime.InteropServices;
class Example
{
// Use DllImport to import the Win32 MessageBox function.
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
static void Main()
{
// Call the MessageBox function using platform invoke.
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}
继承层次结构
System.Object
System.Attribute
System.Runtime.InteropServices.DllImportAttribute
线程安全
此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0
请参见
参考
DllImportAttribute 成员
System.Runtime.InteropServices 命名空间
SetLastError
ExactSpelling
PreserveSig
CallingConvention