Nasıl yapılır: Windows meta verilerinden .h dosyaları oluşturmak için winmdidl.exe ve midlrt.exe programını kullanma
Winmdidl.exe ve midlrt.exe yerel C++ kodu ile Windows Çalışma Zamanı bileşenleri arasında COM düzeyinde etkileşime olanak tanır. Winmdidl.exe, bir Windows Çalışma Zamanı bileşeni için meta verileri içeren bir .winmd dosyası girişi olarak alır ve bir IDL dosyası çıkarır. Midlrt.exe idl dosyasını C++ kodunun kullanabileceği üst bilgi dosyalarına dönüştürür. Her iki araç da komut satırında çalışır.
Bu araçları iki ana senaryoda kullanırsınız:
Windows Çalışma Zamanı Şablon Kitaplığı (WRL) kullanılarak yazılmış bir C++ uygulamasının özel bir Windows Çalışma Zamanı bileşeni kullanabilmesi için özel IDL ve üst bilgi dosyaları oluşturma.
Windows Çalışma Zamanı Bileşeninde kullanıcı tanımlı olay türleri için ara sunucu ve saplama dosyaları oluşturma. Daha fazla bilgi için bkz. Windows Çalışma Zamanı Bileşenleri'nde özel olaylar ve olay erişimcileri.
Bu araçlar yalnızca özel .winmd dosyalarını ayrıştırma için gereklidir. Windows işletim sistemi bileşenleri için .idl ve .h dosyaları sizin için zaten oluşturulmuştur. Windows 8.1'de varsayılan olarak, \Program Files (x86)\Windows Kits\8.1\Include\winrt\ konumunda bulunurlar.
Araçların konumu
[Windows 8.1'de varsayılan olarak, winmdidl.exe ve midlrt.exe C:\Program Files (x86)\Windows Kits\8.1\ konumunda bulunur. Araçların sürümleri \bin\x86\ ve \bin\x64\ klasörlerinde de kullanılabilir.
Winmdidl komut satırı bağımsız değişkenleri
Winmdidl.exe [/nologo] [/suppressversioncheck] [/time] [/outdir:dir] [/banner:file] [/utf8] Winmdfile
/nologo
winmdidl telif hakkı iletisinin ve sürüm numarasının konsolda görüntülenmesini engeller.
/suppressversioncheck
Kullanılmadı.
/Saat
Konsol çıkışında toplam yürütme süresini görüntüler.
/outdir:dir
Bir çıkış dizini belirtir. Yol boşluk içeriyorsa tırnak işaretleri kullanın. Varsayılan çıkış dizini sürücü>:\Users\<username>\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 12.0\ şeklindedir.<
/banner:file
Varsayılan telif hakkı iletisine ve oluşturulan .idl dosyasının en üstünde winmdidl sürüm numarasına eklenecek özel metin içeren bir dosya belirtir. Yol boşluk içeriyorsa tırnak işaretleri kullanın.
/utf8
Dosyanın UTF-8 olarak biçimlendirilmesine neden olur.
Winmdfile
Ayrıştırmak için .winmd dosyasının adı. Yol boşluk içeriyorsa tırnak işaretleri kullanın.
Midlrt komut satırı bağımsız değişkenleri
Bkz. MIDLRT ve Windows Çalışma Zamanı bileşenleri.
Örnekler
Aşağıdaki örnekte Visual Studio x86 komut isteminde winmdidl komutu gösterilmektedir. Oluşturulan .idl dosyasına eklenecek özel başlık metni içeren bir çıkış dizini ve bir dosya belirtir.
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"
Sonraki örnekte, işlemin başarılı olduğunu gösteren winmdidl'den konsol görüntüsü gösterilir.
c:\users\giraffe\documents\\Test_for_winmdidl.idl oluşturuluyor
Ardından, oluşturulan IDL dosyasında midlrt çalıştırılır. metadata_dir bağımsız değişkeninin .idl dosyasının adından sonra belirtildiğine dikkat edin. \WinMetadata\ yolu gereklidir; windows.winmd konumudur.
C:\Program Files (x86)\Microsoft Visual Studio 12.0> midlrt "c:\users\username\documents\test_for_winmdidl.idl" /metadata_dir "C:\Windows\System32\WinMetadata"
Açıklamalar
Winmdidl işleminin çıkış dosyası giriş dosyasıyla aynı ada sahiptir, ancak .idl dosya adı uzantısına sahiptir.
WRL'den erişilecek bir Windows Çalışma Zamanı bileşeni geliştiriyorsanız, her derlemede .idl ve .h dosyalarının oluşturulması için derleme sonrası adımlar olarak çalışacak winmdidl.exe ve midlrt.exe belirtebilirsiniz. Örnek için bkz. Windows Çalışma Zamanı Bileşenlerinde Olayları Oluşturma.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin