2011-09-20 40 views
10

C# içinde tüketebileceğiniz bir C++ WinRT bileşeni oluşturabileceğiniz söylendi. Basit bir test projem var - bir C# XAML uygulaması ve sadece temel WinRT Bileşeni proje şablonunu kullanan bir C++ projesi var. C# XAML projesinde bir proje başvurusu eklemeye çalıştığımda, bu başvuru eklenemediğini (neden emin değil) söylüyor. Yerel WinRT bileşenini oluşturabilirim ve .winmd dosyası oluşturulur ve bu .winmd dosyasına, başvuru ekle iletişim kutusundaki gözat düğmesini kullanarak el ile bir başvuru ekleyebilirim. Bu, yerel kitaplıktaki yöntemlere erişmeme izin verir, ancak oluşturduğumda, Platform.IDisposable kullanıyor, ancak bu tür başvurulan bir derlemede tanımlanır. Bu senaryoyu gösteren oturumların hiçbirini görmedim.Yerel bir WinRT bileşenini yönetilen bir projeden nasıl başvuruyorsunuz?

cevap

2

Başvuruda bulunduğunuz C++ WinRT aksamı, büyük olasılıkla, IDisposable arabirimini uygulayan nesneleri kullanır, böylece arabirimi içeren C++ derlemine başvurmanız gerekir.

+0

Hangi C++ topluluğu nedir? Sözde, WinRT için tüm çekirdek derlemeler zaten otomatik olarak başvurulan. Seçmek için referans iletişim kutusunda hiçbir standart montaj yoktur. –

+3

@Jeremy 'Platform.IDisposable' çözmek için .NET uygulamasına Microsoft.VCLibs' için bir başvuru eklemeniz gerekiyor gibi görünüyor (yan notta, System.IDisposable olarak projelendirilmesini beklerdim) ', ama olmaz ...). Ancak, onu referans olarak eklemek, dağıtım yaparken sorunlara neden oluyor gibi görünüyor. Muhtemelen bir Dev Önizleme tuhaflığı. –

+0

Evet, Microsoft.VCLibs'i farkettim ve denedim, ve tanımlandığı yer burası gibi görünüyor, ancak dağıtımı yaparken de hata alıyorum. Ambalaj malzemelerini araştırmak zorunda kalacak - belki de VCLibs'in çalışması için pakete dahil edilmeli mi? Bunu işe almak isteyen var mı? –

2

Benzer sorunlar yaşadım, Microsoft.VCLibs'e bir başvuru ekledikten sonra konuşlandırılamadım. Ancak fark ettim ki, varsayılan olarak WinRT bileşeni x86 koduna derlenirken, C# Metro stili uygulaması HERHANGİ bir cpu hedefler ve bu benim durumumda temel bir nedendi. C# uygulamasını x86'ya çevirmek sorunu çözdü.

İlgili konular