• Viernes 1 de Noviembre de 2024, 10:36

Autor Tema:  Usar Dll En Visual C++  (Leído 2233 veces)

tyron

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Usar Dll En Visual C++
« en: Lunes 11 de Abril de 2005, 18:49 »
0
Hola a todos, mirad, vengo de visual basic, acabo de empezar con visual c++ (6.0) y no se como agregar y utilizar una dll que cree en visual basic (o cualquier otra). Con visualbasic simplemente marco una casilla que hace referencia a esa dll y listo pero, ¿como en visual c++? Espero que puedan ayudarme, salu2

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Usar Dll En Visual C++
« Respuesta #1 en: Lunes 11 de Abril de 2005, 20:48 »
0
Hola

Las DLL construidas con VB exportan objetos COM.

La manera más simple de usar objetos COM desde VC++ es usando la directiva #import y los smart pointers de COM que genera esta directiva.

El mecanismo sería algo como:

Código: Text
  1. #import "tuDLL.DLL"
  2. using namespace tuDLL
  3. ...
  4. //Crear un objeto
  5. _TuClaseVBPtr tuClase(__uuidof(TuClaseVB));
  6. tuClase->MetodoDeTuClaseVB();
  7.  

saludos  :hola:

tyron

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Usar Dll En Visual C++
« Respuesta #2 en: Lunes 11 de Abril de 2005, 23:51 »
0
Hola Diodo, en primer lugar muchas gracias por contestar.

Tengo un problema, y es que no entiendo muy bien el codigo, mejor si pudiese ser con un ejemplo. Tengo una dll sencilla, que se llama 'prueba.dll', tiene un metodo que se llama 'MostrarMensaje' y le paso como parametros 'Titulo' y 'Mensaje'. El codigo quedaria algo como esto?

Código: Text
  1.  
  2. #import "prueba.dll"
  3. using namespace prueba; // Aqui me pedia un&#59;
  4.  
  5. void CPruebaView::OnButton1()
  6. {
  7. _TuClaseVBPtr tuClase(__uuidof(TuClaseVB)); // Aqui me pierdo *
  8. tuClase->MetodoDeTuClaseVB(); // Esto está claro
  9. }
  10.  
  11.  

* Ahí que tengo que poner exactamente? Tengo que crear una clase, para luego crearme un objeto de esa clase? Como tiene que ser esa clase?
Y donde pone TuClaseVB que es, el nombre de la clase donde puse las funciones de la dll en visualbasic?

Bueno perdona mi ignorancia y espero tengas paciencia conmigo, ya que soy nuevo y no entiendo muy bien esto de las dlls en c++. Un saludo y gracias.

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Usar Dll En Visual C++
« Respuesta #3 en: Martes 12 de Abril de 2005, 10:24 »
0
Hola, no hay nada que perdonar, la verdad es que no me gusta demasiado visual basic y yo tampoco entiendo muy bien como funciona la creacion de los objetos ya importados, nunca lo probe.

si te sirve aqui encontre otro ejemplo en ingles:

Citar
How can I use my VB ActiveX dll from VC++?

 Starting with VC++ 5.0, there's a new compiler directive that makes it very easy to do: #import. Combined with COM smart pointers, using VB ActiveX dlls is a snap. Basically, all you have to do this is #import the dll, and the compiler will automatically generate all required definitions from it.  Then create objects from the library by using either smart pointers, or CoCreateInstance().

To understand this better, let's look at a simple example: Suppose I have a VB ActiveX DLL with a class called Test, which has a method called TryItOut(). You can create the object and call the method like this:


#import "test.dll" no_namespace named_guids

_TestPtr    pTest = 0;
HRESULT hres = pTest.CreateInstance  ( __uuidof(Test) );
pTest->TryItOut();

Ya se que no es mucha ayuda pero es de lo poco que encontre sobre el tema, espero que te sirva.

saludos :hola:

tyron

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Usar Dll En Visual C++
« Respuesta #4 en: Martes 12 de Abril de 2005, 17:38 »
0
Pues muchas gracias por la informacion Diodo. Ya lo conseguí. Ahora el problema es que yo en el metodo que creo en la clase de visual basic tengo que pasar como argumentos dos variables de tipo string, y en visual c++, al pasar los argumentos tienen que ser de tipo short. Como me como eso? La verdad es que no se muy bien como son las variables de tipo short, lo unico que se es que son de 2 bytes. Como paso al metodo unos argumentos de tipo cadena validos? o tengo que declararlos de alguna manera especial en visual basic? Gracias de antemano.