Potrzebuję opracować kilka klas, które powinny być możliwe do wywołania z VB6 z Managed C++ (C++/CLI).Generowanie widocznego zestawu COM z zarządzanego C++ (C++/CLI)
Najpierw opracowałem próbkę w języku C# i mogę używać zestawu przez COM bez problemów po prostu używając ustawienia "Zarejestruj dla współdziałania COM" i "Utwórz złożenie COM widoczne" (i używając atrybutu [ClassInterface (ClassInterfaceType) .AutoDual)] aby udostępnić metody w VB6:
Po tym starałem się przetłumaczyć próbkę na C++/CLI bez powodzenia.Utworzyłem tę samą klasę z atrybutem [ClassInterface (ClassInterfaceType.AutoDual)]. Ustawiłem ustawienie "Embedded IDL", aby określić wyjściową TLB, ale TLB nie jest generowane automatycznie.Jeśli używam tlbexp util przez wygenerowaną bibliotekę DLL, otrzymuję tlb, który można zaimportować do VB6, ale kiedy próbuję utworzyć instancję Otrzymuję "Komponent ActiveX nie może utworzyć obiektu (429) "
Co jeszcze muszę zrobić z projektem, aby pozwolić mu działać?
Z góry dziękuję.
Automatyczne rejestrowanie złożenia za pomocą polecenia tlbexp, prawda? Opcja/tlb jest zgłaszana jako nierozpoznana przez kompilator i linker. Czy jesteś tego pewien? –
Nie, tlbexp generuje tylko bibliotekę typów, nic nie jest rejestrowane. Opcja/tlb dotyczy Regasm.exe, a nie kompilatora lub linkera. Bardzo mnie to dziwi, że nie dostałeś tego z mojego postu. –
To musi być coś związanego z tym, że jest trochę za późno. Ponownie przeczytałem twój wpis i jestem zdziwiony jak ty :) –