导入文件和类型库

通过 MIDL 关键字 包括导入importlib ,可以通过引用现有标头、IDL 和对象定义语言 (ODL) 文件和编译的类型库来重用代码。

ACF include 指令允许在 ACF 文件中指定要包含在 MIDL 生成的存根代码中的一个或多个 C 语言头文件。 生成的文件将有一个行,其中包含 #include C 预处理器指令以及指示的头文件。 使用此 include 指令引入特定于特定操作环境的头文件,并且不包含客户端和服务器之间的接口所需的信息。 不要将 include 用于包含要提供给 IDL 文件的数据类型的头文件;请改用 import 指令。

示例 1

[
  auto_handle
] 
interface X86PC
{ 
  include "gendefs.h", "protos.h", "myfile.h"; 
  //interface typdefs and function declarations here
}

IDL import 指令是用于将其他 IDL (或 ODL 中的类型和接口定义) 文件和头文件引入 IDL 文件的标准方法。 导入文件中的所有 IDL 语句(如 typedefs、 const 声明和接口定义)都可用于导入 IDL 文件。

与 C 语言预处理器指令 #include一样, import 指令会告知编译器包括导入的 IDL 文件中定义的数据类型。 与 #include 指令不同, import 指令会忽略过程原型,因为不会为导入文件中的任何内容生成存根。 由于预处理器是为导入的文件单独调用的,因此预处理器指令 (,例如 **) 不会延续到导入 IDL 文件。

有关使用 导入 在 IDL 文件中包括系统头文件的其他信息,请参阅 导入系统头文件

示例 2

[
  uuid(. . .), object
] 
interface IKnown : IUnknown
{
  import "base.idl", "unknwn.idl", "helper.idl";
  //remainder of interface definition
}

ODL importlib 指令允许在 IDL 或 ODL 文件中引用编译的类型库。 importlib 指令必须位于语句中,并且必须在库中的其他类型说明之前。 导入的库以及生成的库必须在运行时可供应用程序使用。

示例 3

library NewBrowser
{
  importlib("stdole32.tlb");
  importlib("legacy.tlb");
  //remainder of library definition
};

还可以使用 C 预处理器 #include 指令在 IDL 或 ODL 文件中包括标头和其他文件。 但是,请注意,此指令在字面上将包含指定文件的全部内容。 如果头文件在 MIDL 生成的存根文件中包含不需要或不需要的原型,或者它包含不可恢复的类型定义,则应使用 MIDL import 指令而不是 #include 指令。

进口

importlib

include

导入系统头文件