Генерация видимой COM-сборки из управляемого c ++ (C ++ / CLI) - PullRequest
6 голосов
/ 29 октября 2010

Мне нужно разработать некоторые классы, которые должны вызываться из VB6 с Managed C ++ (C ++ / CLI).

Сначала я разработал пример на C # и могу без проблем использовать сборку через COM просто используя параметр «Зарегистрироваться для взаимодействия COM» и «Сделать сборку COM видимой» (и используя атрибут [ClassInterfaceType.AutoDual)], чтобы сделать методы доступными в VB6.

После этого я безуспешно пытался перевести образец на C ++ / CLI. Я создал тот же класс с атрибутом [ClassInterface (ClassInterfaceType.AutoDual)]. Я установил параметр «Встроенный IDL», чтобы указать выходной TLB, но TLB не создается автоматически. Если я использую утилиту tlbexp над сгенерированной DLL, я получаю tlb, который можно импортировать на VB6, но когда я пытаюсь создать экземпляр, я получаю «ActiveX compoennt не может создать объект (429)»

Что мне еще нужно сделать с проектом, чтобы он запустился?

Заранее спасибо.

1 Ответ

6 голосов
/ 29 октября 2010

Не так много, но вы никогда не упоминали о регистрации сборки.В C ++ IDE нет опции «Зарегистрироваться для взаимодействия COM».В командной строке Visual Studio запустите Regasm.exe для сборки, чтобы зарегистрировать ее.Вам нужна опция / codebase, если вы не помещаете сборку в GAC.А параметр / tlb создает библиотеку типов, что делает ненужным tlbexp.exe.

...