Dev - C++ - Llamar a una funcion de una DLL cargada dinamicamente

 
Vista:
sin imagen de perfil

Llamar a una funcion de una DLL cargada dinamicamente

Publicado por Pablo Hugo (1 intervención) el 12/07/2021 03:02:29
Hola:

Estoy haciendo un interprete y necesito llamar a una funcion tomada de una dll cargada dinamicamente, esto es asi ya que quiero que el programa interpretado cargue la dll y no el interprete. Ademas necesito que los parametros se encuentren en un pila de enteros.

aqui tengo un fragmento del codigo que estoy probando


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HANDLE hStdout;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 
HMODULE hLib=LoadLibraryA("KERNEL32.DLL");
if (!hLib) {
     printf("Load Error");
     return 0;
   }else{
     printf("Load OK");
     hFunc=(int64_t)GetProcAddress(hLib,"WriteConsole");
     printf("Address=%x ",hFunc);
 
//		WriteConsole(hStdout, "coso", 5, 0, 0);  // Esto funciona correctamente
 
// **** quiero que funcione de esta manera ***
      hFunc=(int64_t)(* (int64_t(*)(int64_t,int64_t,int64_t,int64_t,int64_t))hFunc)((int64_t)hStdout,(int64_t)"coso",5,0,0) ;
 
	printf("ok?");
   }

la llamada comentada funciona ok ya que no lo esta haciendo por la direccion de la funcion (hFunc)

pero quiero llamarla por esta direccion y le hago un cast para poder llamarla, aqui quiero aclara que necesito que todos los valores sean pasados int64, me imagina que la funcion a la que llame interpretara el valor segun le corresponda (esto no se como funciona)

Alguien sabe como puedo hacer esto?, desde ya gracias.
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