2010-10-29 7 views
6

Necesito desarrollar algunas clases que deberían ser ejecutables desde VB6 con C++ administrado (C++/CLI).Generar un ensamblado visible de COM desde C++ administrado (C++/CLI)

He desarrollado primero una muestra en C# y puedo usar el ensamble a través de COM sin problemas simplemente usando el ajuste "Registrar para interoperabilidad COM" y "Hacer visible el ensamblador COM" (y usando el atributo [ClassInterface (ClassInterfaceType) .AutoDual)] para poner a disposición los métodos en VB6.

Después de eso traté de traducir la muestra a C++/CLI sin éxito. He creado la misma clase con el atributo [ClassInterface (ClassInterfaceType.AutoDual)]. Establecí la configuración de "IDL incrustado" para especificar el TLB de salida pero el TLB no se genera automáticamente. Si utilizo la utilidad tlbexp sobre el archivo DLL generado, obtengo un tlb que se puede importar en VB6 pero cuando intento crear una instancia Obtengo un "componente de ActiveX no puede crear un objeto (429) "

¿Qué más necesito hacer con el proyecto para que funcione?

Gracias de antemano.

Respuesta

6

No hay mucho que seguir, pero nunca mencionó el registro del ensamblaje. El C++ IDE no tiene la opción "Registrarse para interoperabilidad COM". Desde el símbolo del sistema de Visual Studio, ejecute Regasm.exe en el ensamblado para registrarlo. Necesita la opción/codebase si no coloca el ensamblaje en el GAC. Y la opción/tlb genera la biblioteca de tipos, haciendo innecesario tlbexp.exe.

+0

Estoy registrando el ensamblaje automáticamente con tlbexp, ¿verdad? La opción/tlb se informa como no reconocida por el compilador y el vinculador. ¿Está usted seguro de eso? –

+0

No, tlbexp solo genera una biblioteca de tipos, nada se está registrando. La opción/tlb es para Regasm.exe, no para el compilador o el enlazador. Me desconcierta mucho que no lo hayas sacado de mi publicación. –

+0

Tiene que ser algo relacionado con que aquí sea un poco tarde. He vuelto a leer tu publicación y estoy tan perplejo como tú :) –

Cuestiones relacionadas