Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Interacción DLL en C - DLL en Basic

Estas en el tema de Interacción DLL en C - DLL en Basic en el foro de C/C++ en Foros del Web. Buenas a todos. Tengo una DLL en Basic y quisiera llamar a una función de esa DLL desde una DLL en C. He leido sobre ...
  #1 (permalink)  
Antiguo 06/09/2011, 08:59
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 13 años, 5 meses
Puntos: 2
Interacción DLL en C - DLL en Basic

Buenas a todos. Tengo una DLL en Basic y quisiera llamar a una función de esa DLL desde una DLL en C. He leido sobre LoadLibrary() y GetProcAddres() pero quisiera saber si me podrían dejar un ejemplo. La DLL en basic que quiero llamar, se llama "Prueba.dll" y la función es "Saludo".

Gracias!
  #2 (permalink)  
Antiguo 07/09/2011, 02:07
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: Interacción DLL en C - DLL en Basic

Se ha comentado muchisimas veces sobre esto en el foro,busca un poco por que yo mimso deje el ejemplo de uso,o sino podrias buscar en google en la msdn esta explicaco como hacerlo,ai tienes el codigo que carga y ejecuta la funcion de la DLL

http://msdn.microsoft.com/en-us/library/ms686944(v=vs.85).aspx

ese codigo deberas pronerlo en la DLL encargada de cargar la DLL "Prueba.dll" si mal no e entendido,doy por entendido que sabes C/C++ y manejo de punteros,prueba aver como te va y nos comentas

pd: Te recomiendo que eches un vistazo a las funciones que mencionaste arriba en la msdn,alli te explica como usarlas,sus parametros y valor de retorno.


saludos
  #3 (permalink)  
Antiguo 07/09/2011, 07:05
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Interacción DLL en C - DLL en Basic

Hola. Bueno mira este es el código que he utilizado, pero solo me ha funcionado en un exe, no en una DLL. Además, la función saludo de la DLL en vb6 crea un msgbox pero al cargar la DLL y llamar a esa funcion desde C no hace nada. La única funcion que pude hacer funcionar de la DLL de basic, desde una en C fue la de abrir una ventana MS-DOS (shell "cmd", vbNormalFocus). Las demás no me han funcionado. He aquí mi código:

dllmain.c

Código:
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

doSaludo()
{
typedef void (__stdcall *PROC)(void);
PROC Saludo=(PROC)GetProcAddress(LoadLibrary("Prueba.dll"),"Saludo");
Saludo();
}

DLLIMPORT void HelloWorld ()
{
typedef void (__stdcall *PROC)(void);
   doSaludo();
}


BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        HelloWorld();

      case DLL_PROCESS_DETACH:
        break;

      case DLL_THREAD_ATTACH:
        break;

      case DLL_THREAD_DETACH:
        break;
    }

    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}

Etiquetas: basic, dll, interacción
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:35.