C/Visual C - ayuda para crear objeto

 
Vista:

ayuda para crear objeto

Publicado por Rodrigo Araya (2 intervenciones) el 22/09/2005 15:37:51
Hola, estoy que me tiro por la ventana...

Estoy tratando de crear un objeto desde un archivo ".tlb" utilizando la directiva #import
pero lamentablemente al momento de compilar me retorna error "c2259:cannot instantiate abstract class". aahhh y lo estoy haciendo en un proyecto de extended procedure

Este es mi codigo: (el error lo genera en la ultima linea)

#import "C:\Rodrigo\Documentos\Visual Studio Projects\xp_BatchPortia\xp_BatchPortia\portia.tlb" rename_namespace("iportia")// , raw_interfaces_only

using namespace iportia;
...

HRESULT hr;

hr = CoInitialize(NULL);

IPortiaApp *pPortiaApp = NULL;

pPortiaApp = new IPortiaApp;

.....

Gracias.... en una de esas no me lanzo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda para crear objeto

Publicado por fernando.gomez (1603 intervenciones) el 22/09/2005 16:34:11
No, pues está totalmente erróneo el asunto. IPortiaApp seguramente es una interfaz, lo que implica que todos sus miembros son públicos y virtualmente puros, por lo que ni Dios la podría instanciar.

Dado que veo un CoInitialize, asumo que estás intentando crear un componente COM. En cuyo caso, en lugar del "new" tendrías que usar algo como:

pPortiaApp = CoCreateInstance(...).

Los parámetros de CoCreateInstance son diversos, pero el más importante es el CLSID de la clase que contiene la implementación de la interfaz IPortiaApp, y el IID que es el ID de la interfase. Estos números los debes de tener de antemano -y seguramente están en el TLB-.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda para crear objeto

Publicado por Rodrigo Araya (2 intervenciones) el 22/09/2005 22:52:42
Fernando, gracias por tu respuesta, pero lamentablemente , sigo dando palos de ciego, tu tendrias un ejemplo minimo de crear un objeto en c++ desde un archvi tlb?

O quizas tenga que cambiar la estrategia y elegir otro lenguaje.

Bueno, todo esto es por falta de conocimeinto en c++ y no existen ejemplos comunes y explicativos en web.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda para crear objeto

Publicado por fernando.gomez (1603 intervenciones) el 22/09/2005 23:47:37
Es que lo que quieres es emplear un componente COM. En www.msdn.microsoft.com hay una sección dedicada a esto, y sería bueno que revisaras manuales de COM. Sin datos del código, no te puedo ayudar mucho. No necesitas cambiar de lenguaje, aunque me sorprende que emplees COM si dices que te falta conocimiento en C++, dado que COM es una API algo compleja y enredada de manejar.

El TLB es un archivo creado para ahorrarte algunos pasos solamente, pero debes entender COM para poder emplearlo. En sí, como cliente, no tienes más que llamar a CoInitialize y después llamar a CoCreateInstance con los CLSID y IID necesarios. Pero debes entender cómo funciona COM.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar