共用方式為


如何:使用 winmdidl.exe 和 midlrt.exe 根據 Windows 中繼資料建立 .h 檔案

Winmdidl.exe 和 midlrt.exe 啟用原生 C++ 程式碼和 Windows 執行階段元件之間的 COM 層級互動。 當輸入包含 Windows 執行階段元件中繼資料的 .winmd 檔和輸出 IDL 檔案時,會執行 Winmdidl.exe。 Midlrt.exe 將 IDL 檔轉換成 C++ 程式碼可以使用的標頭檔。 兩個工具皆在命令列中執行。

您可以在兩個主要案例中使用這些工具:

  • 建立自訂的 IDL 和標頭檔,讓透過使用 Windows 執行階段範本程式庫 (WRL) 撰寫的 C++ 應用程式,可以使用自訂的 Windows 執行階段元件。

  • 在 Windows 執行階段元件產生使用者自定義事件類別的 Proxy 和 Stub 檔案。 如需詳細資訊,請參閱在 Windows 執行階段元件中引發事件

這些工具對於解析自訂 .winmd 檔案是必要的。 Windows 作業系統元件的 .idl 和 .h 檔案已經為您產生。 根據 Windows 8.1 的預設,它們位於 \ Program Files (x86) \ Windows Kit\ 8.1 \ Include \ winrt \。

工具的位置。

根據 Windows 8.1 的預設,winmdidl.exe 和 midlrt.exe 位於 C:\Program Files (x86) \ Windows Kits\ 8.1 \。 工具版本也可以在 \ bin \ x86 \和\ bin \ x64 \ 資料夾中取得。

Winmdidl 命令列引數

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>
    指定包字自訂文字的檔案,在產生的 .idl 檔案頂端加入預設著作權訊息和 winmdidl 版本號碼。 如果路徑包含空格,請使用引號。

  • /utf8
    將檔案格式設定為 UTF-8。

  • Winmdfile
    待解析 .winmd 檔的名稱 如果路徑包含空格,請使用引號。

Midlrt 命令列引數

請參閱 MIDLRT 和 Windows 執行階段元件

範例

下列範例顯示在 Visual Studio x86 命令提示字元的 winmdidl 命令。 它指定輸出目錄,並包含加入至產生的 .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 執行階段元件中引發事件