如何:使用 winmdidl.exe 和 midlrt.exe 通过窗口元数据创建 .h 文件

Winmdidl.exe 和 midlrt.exe 启用本机 C++ 代码和 Windows 运行时组件之间的 COM 级交互。 Winmdidl.exe 采用包含 Windows 运行时组件和输出的元数据 IDL 文件的 .winmd 文件。 Midlrt.exe 将此 IDL 文件转换为 C++ 代码可以使用的标头文件。 在命令行运行的两个工具。

对两个主要方案使用这些工具:

  • 创建自定义 IDL 和标头文件,以便 c. c++ 应用程序编写使用 Windows 运行时模板库 (WRL) 可以使用自定义 Windows 运行时组件。

  • 在Windows 运行时组件中生成用户定义的事件的代理及存根文件。 有关详细信息,请参阅在 Windows 运行时组件中引发事件

这些工具对于分析自定义 .winmd 文件仅是必需的。 windows 操作系统组件的 .idl 和 .h 文件已经为您生成。 默认情况下,此文件位于 Windows 8.1located in \Program Files (x86)\Windows Kits\8.1\Include\winrt\。

工具的位置

默认情况下,winmdidl.exe and midlrt.exe 位于 Windows 8.1located in C:\Program Files (x86)\Windows Kits\8.1\。 工具的版本还可在\bin\x86 和 \bin\x64\ 文件夹。

处理命令行参数

Winmdidl.exe [/nologo] [/supressversioncheck] [/time] [/outdir:dir] [/banner:file] [/utf8] Winmdfile

  • /nologo
    防止 winmdidl 版权消息和版本号的控件个显示。

  • /supressversioncheck
    未使用。

  • /time
    显示在控件个输出的总执行时间。

  • /outdir:<dir>
    指定输出目录。 如果路径包含空格,请使用引号。 默认的输出目录为 <drive>:\Users\<username>\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 12.0。

  • /banner:<file>
    指定包含自定义文本前面添加到默认值和版权信息 winmdidl 版本号在生成的 .idl 文件顶部的文件。 如果路径包含空格,请使用引号。

  • /utf8
    使文件的格式设置为 UTF-8。

  • Winmdfile
    要播放的影片的.winmd 文件名。 如果路径包含空格,请使用引号。

命令行参数

参见MIDLRT 和Windows运行组件

示例

下面的示例演示一个 winmdidl 命令在 Visual Studio x86 命令提示。 它指定输出目录和包含特定横幅文本添加到生成的 .idl 文件的文件。

C:\Program Files (x86)\Microsoft Visual Studio 12.0>winmdidl /nologo /outdir:c:\users\giraffe\documents\ /banner:c:\users\giraffe\documents\banner.txt "C:\Users\giraffe\Documents\Visual Studio 2013\Projects\Test_for_winmdidl\Debug\Test_for_winmdidl\test_for_winmdidl.winmd"

下一个示例演示从指示的 winmdidl 的控件个显示操作成功。

Generating c:\users\giraffe\documents\\Test_for_winmdidl.idl

接下来,midlrt 在生成的 IDL 文件运行。 请注意, metadata_dir参数在 .idl文件名后指定。 路径\WinMetadata\需要它是 windows.winmd 的位置。

C:\Program Files (x86)\Microsoft Visual Studio 12.0> midlrt "c:\users\mblome\documents\test_for_winmdidl.idl" /metadata_dir "C:\Windows\System32\WinMetadata"

备注

从 winmdidl 操作的输出文件的名称与输入文件相同,但有 .idl 文件扩展名。

如果开发从 WRL 将捕获的一个 Windows 运行时组件,可以指定 winmdidl.exe 和 midlrt.exe 运行,在后期生成步骤,以便 .idl 和 .h 文件在每次生成中生成。 有关示例,请参见在 Windows 运行时组件中引发事件