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

Ejecutar dll de basic en c++

Estas en el tema de Ejecutar dll de basic en c++ en el foro de C/C++ en Foros del Web. Tengo una dll hecha en Visual Basic express 2010, quería llamarla desde un programa en c++, se puede hacer? Y si se puede alguien me ...
  #1 (permalink)  
Antiguo 30/08/2011, 07:45
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Ejecutar dll de basic en c++

Tengo una dll hecha en Visual Basic express 2010, quería llamarla desde un programa en c++, se puede hacer? Y si se puede alguien me puede explicar unas directrices o algún codigo de ejemplo, quiero llamar a esa dll y que se ejecute nada mas, no quiero pasarle valores ni nada....
Gracias de antemano!
  #2 (permalink)  
Antiguo 30/08/2011, 12:45
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Ejecutar dll de basic en c++

Creo que deberas usar las Api de Windows Amigo,busca info hacerca de las funciones "LoadLibrary() y GetProcAddres()"


la primera carga la Libreria dinamica en question (DLL),y con la segunda obtienes la direccion a la funcion o variable de la DLL que quieres acceder/usar,los parametros de este son el manejador del modulo cargado con Loadlibrary y una cadena de texto especificando el nombre de la funcion a encontrar/usar.

Doy por entendido que la libreria echa en Basic la has echo tu,por lo que ya sabes el nombre de la funcion/variable,si no puedes con la Api (que seguro puedes) podrias probar con "extern" pero alli ya no se si funcionaria,creo que no.....en fin suerte


salu2
  #3 (permalink)  
Antiguo 30/08/2011, 13:05
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ejecutar dll de basic en c++

Bueno gracias probaré mañana, a ver si soy capaz de hacer algo, agradeceria si alguien tiene un codigo ejemplo en visual c++ 2008 que es la version que estoy usando! Gracias de antemano!
  #4 (permalink)  
Antiguo 30/08/2011, 15:51
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Ejecutar dll de basic en c++

Busca un poco en Google que no te vas a morir,ademas si se trata de la api de windows con que pongas "Loadlibrary en google te sale,aqui te dejo el link,no te acostumbres!

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



saludos y suerte
  #5 (permalink)  
Antiguo 31/08/2011, 02:04
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Exclamación Respuesta: Ejecutar dll de basic en c++

Antes de nada agradecer la ayuda que me estais dando.
He probado con el link que me has pasado, en teoría me carga la dll pero cuando hago el GetProcAddress lo que me devuelve es un valor nulo.... Pero el caso es que en la dll que hago en visual se llama Public Sub UpdateWordFile, es decir tiene el mismo nombre, no se donde estoy fallando....
Espero que me podais ayudar.

int main( void )
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;

// Get a handle to the DLL module.

hinstLib = LoadLibrary(TEXT("C:\\WORD++.dll"));

// If the handle is valid, try to get the function address.

if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "UpdateWordFile");
}
  #6 (permalink)  
Antiguo 31/08/2011, 03:20
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Ejecutar dll de basic en c++

Donde esta:

Código C++:
Ver original
  1. typedef int (__cdecl *MYPROC)(LPWSTR);

?¿

recuerda que debes usar la funcion "Freelibrary" al terminar....

y si no te sale pues con tu ID de C++ que uses agrega lalibreria y usa:

Código C++:
Ver original
  1. extern "C" __declspec( dllexport ) void Nombre_Funcion();
  2.  
  3.  
  4. Nombre_Funcion(parametros);


aun que esta segunda no estoy tan seguro de que funcione,si no funciona dimelo i te pase una practica que hice con LoadLibrary,deberia buscarla


salu2
  #7 (permalink)  
Antiguo 31/08/2011, 08:28
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ejecutar dll de basic en c++

A ver, he estado probando, el problema no es que no se ejecute, el problema es que la instruccion
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "UpdateWordFile");

No añade ningun valor a ProcAdd ese es elproblema, y no entiendo porque...

y lo que me decias de typedef int (__cdecl *MYPROC)(LPWSTR); si lo tengo puesto, esta intrucción
hinstLib = LoadLibrary(TEXT("C:\\WORD++.dll"));
si se ejeecuta correctamente porque mete un valor en hinstLib,pero luego en la de ProcAdd no mete el valor, y no entiendo porque he probado lo tro que me decias y tampoco....
Estoy algo desesperado ya....
Gracias
  #8 (permalink)  
Antiguo 31/08/2011, 13:00
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Ejecutar dll de basic en c++

bien,prueba esto:

Código C++:
Ver original
  1. typedef void (* WINAPI proc_t) (void);
  2. / / ..
  3. funci = (proc_t) GetProcAddress (mydll,"funcion");

y si no funciona pues usa la funcion GetLastError(), y sabras por que no funciona,iria bien que inidcases que IDE estas usando....


saludos ^^
  #9 (permalink)  
Antiguo 10/09/2011, 07:47
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ejecutar dll de basic en c++

A ver he probado lo que me dices y tampoco, no se si es demasiado pedir, pero si puedes pasarme un codigo entero que sepas que funcione, o que te funcione te lo agradecería... porque no se que puede estar pasando..... Mil gracias de nuevo.
  #10 (permalink)  
Antiguo 10/09/2011, 08:10
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ejecutar dll de basic en c++

Por cierto probe con visual c++ 2008 y 2010 y me pasa lo mismo, por favor alguien que tenga un codigo que haya comprobado que si le carga la dll...
  #11 (permalink)  
Antiguo 20/09/2011, 03:21
 
Fecha de Ingreso: agosto-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ejecutar dll de basic en c++

Alguien me puede ayudar por favor???
  #12 (permalink)  
Antiguo 20/09/2011, 16:11
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Ejecutar dll de basic en c++

Mira, este ejemplo a mi me funciono a la perfeccion : http://www.cplusplus.com/forum/windows/8555/

Muchas veces el problema esta en la DLL si no esta compilada de forma estandar no funciona. Si la DLL esta hecha en C/c++ debes porner esta instruccion antes de declarar la funcion :

extern "C" __declspec( dllexport )

Pero en visual basic ni idea. Porque no preguntas en el foro de Visual Basic...

Etiquetas: basic, c++, dll
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 13:59.