2010-10-29 26 views
6

'dan COM görünür bir derleme oluşturma Managed C++ (C++/CLI) ile VB6'dan kalınabilir olması gereken bazı sınıflar geliştirmem gerekiyor.Yönetilen bir C++ (C++/CLI)

İlk olarak C# 'da bir örnek geliştirdim ve derlemeyi COM aracılığıyla " için" COM for COM'a kayıt ol "ve" Assembly COM görünür hale getir "ayarını kullanmadan kullanabilirim (ve özniteliği kullanarak [ClassInterface (ClassInterfaceType) .AutoDual)] VB6'da kullanılabilir yöntemler yapmak için

Bundan sonra, örneği C++/CLI'ye başarılı bir şekilde çevirmeye çalıştım. [ClassInterface (ClassInterfaceType.AutoDual)] özniteliğiyle aynı sınıfı oluşturdum. çıkış TLB belirtmek için "Gömülü IDL" ayarını ayarlamak ancak TLB otomatik olarak oluşturulmaz.Eğer oluşturulan DLL üzerinden tlbexp kullanımı kullanırsanız VB6 ithal edilebilir bir tlb alıyorum ama bir örnek oluşturmaya çalıştığınızda Bir "ActiveX bileşenini nesne oluşturamıyorum" (429) "

Çalıştırmasına izin vermek için projeyle daha ne yapmam gerekiyor?

Şimdiden teşekkürler.

cevap

6

Devam etmek için fazla bir şey yok, ancak montajı kaydetmekten hiç bahsetmediniz. C++ IDE "COM birlikte çalışabilir" seçeneğine sahip değildir. Visual Studio Komut İstemi'nden, kayıtlı olması için derlemedeki Regasm.exe dosyasını çalıştırın. Düzeneği GAC'ye yerleştirmezseniz,/codebase seçeneğine ihtiyacınız vardır. Ve/tlb seçeneği, tlbexp.exe'yi gereksiz kılan tür kitaplığı oluşturur.

+0

Derlemeyi tlbexp ile otomatik olarak kaydediyorum, değil mi?/Tlb seçeneği, derleyici ve bağlayıcı tarafından tanınmıyor olarak bildirilir. Bundan emin misin? –

+0

Hayır, tlbexp yalnızca bir tür kitaplığı oluşturur, hiçbir şey kaydedilmiyor./Tlb seçeneği, derleyici veya linker değil Regasm.exe içindir. Benim yazıdan almamış olman beni çok şaşırtıyor. –

+0

Burada biraz geç kalma ile ilgili bir şey olmalı. Gönderinizi yeniden okudum ve sizler kadar şaşkınım :) –

İlgili konular