C/Visual C - Dll's, no aceptan

 
Vista:
sin imagen de perfil

Dll's, no aceptan

Publicado por Edwin (70 intervenciones) el 19/04/2007 00:36:06
Hola a todos, he creado un dll en Visual C++ 6.0, con normalidad la uso en Visual C++ 6.0, pero cuando quiero usarla en Visual Basic, agregandolo desde Refrencias no me acepta, y ahora he creado una dll en Visual Basic para ejecutarla en Visual C++ 6.0 solo me carga la dll pero no me cargan las funciones de la dll.

Como puedo usar la dll creada en Visual Basic desde Visual c++???
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:Dll's, no aceptan

Publicado por fernando.gomez (1603 intervenciones) el 19/04/2007 06:46:10
Mmm... ¿sabes cuál es la arquitectura de VB? Asumo que no. Bien. Cualquier cosa de VB: clases, DLLs, cajas de texto, ActiveX, etc, que empleas son en realidad componentes COM. El compilador de VB lo que hace es ocultar todos estos detalles al programador. Por ende, VB acepta cualquier cosa que sea COM, desde componentes sencillos hasta ActiveX.

Entonces, para emplear tus clases de C++ en VB no es cuestión simplemente de agregar la referencia. Tienen que ser componentes COM, que implementen la interfaz IUnknown, que haya un IClassFactory en la DLL con los cuatro métodos estándares y que se registren en el Registry de Windows. En otras palabras, tendrías que convertir tus clases en componentes COM, lo cuál es algo... er... complicado. ATL te provée de buena ayuda.

La otra es que emplees puras funciones de C, las cuáles sí admite VB directamente a través de ABI, aunque hay que tener en cuenta que el correspondiente C del tipo de dato String de VB, es BSTR*, no simplemente char o wchar_t.

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
sin imagen de perfil

RE:Dll's, no aceptan

Publicado por Edwin (70 intervenciones) el 22/04/2007 04:35:12
OK...

Gracias por la cátedra.

VB solo acepta COM; disculpa por está pregunta pero y VC++ acepta COM???
ya que cuando cargo la Dll(hecha en VB) al VC++ si me carga la Dll con la función LoadLibrary pero no me carga las funcones con GetProcessAdress.

Y ATL alguna URL, ya que solo encuentro otras cosas.

Gracias de Antemano.
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:Dll's, no aceptan

Publicado por fernando.gomez (4 intervenciones) el 22/04/2007 20:58:26
Hola. Por supuesto, VC++ acepta COM; COM fue contruido para VC++. Y por supuesto que carga la DLL con LoadLibrary, y por supuesto que no te carga las funciones con GetProcAddress porque como te digo, son componentes COM y para eso se emplean la función CoGetClassObject, et al.

En cuanto a ATL, está el sitio de Microsoft, www.msdn.microsoft.com, y si no, siempre está Google.

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