使用非托管 DLL 函数

利用平台调用这种服务,托管代码可以调用在动态链接库 (DLL)(如 Win32 API 中的 DLL)中实现的非托管函数。 此服务将查找并调用导出的函数,然后根据需要跨越互用边界封送其参数(整数、字符串、数组、结构等)。 有关此服务的更多信息,请参见平台调用详解

本节将介绍几项与使用非托管 DLL 函数相关联的任务。 除了下列任务之外,还包括一般注意事项以及一个用于提供附加信息和示例的链接。

使用导出的 DLL 函数

  1. 标识 DLL 中的函数

    最低限度上,必须指定函数的名称和包含该函数的 DLL 的名称。

  2. 创建用于容纳 DLL 函数的类

    可以使用现有类,为每一非托管函数创建单独的类,或者创建包含一组相关的非托管函数的一个类。

  3. 在托管代码中创建原型

    [Visual Basic] 使用带 FunctionLib 关键字的 Declare 语句。 在某些少见的情况下,可以使用带 Shared Function 关键字的 DllImportAttribute。 这些情况在本节后面部分进行说明。

    [C#] 使用 DllImportAttribute 标识 DLL 和函数。 用 staticextern 修饰符标记方法。

    [C++] 使用 DllImportAttribute 标识 DLL 和函数。 用 extern "C" 标记包装方法或函数。

  4. 调用 DLL 函数

    像处理其他任何托管方法一样调用托管类上的方法。 传递结构实现回调函数属于特殊情况。

有关说明如何构造用于平台调用的基于 .NET 的声明的示例,请参见用平台调用封送数据

请参见

概念

平台调用详解

平台调用示例

互操作封送处理

其他资源

与非托管代码交互操作