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
Código:
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.