Hola gente, estoy tratando de cargar una DLL desde la memoria.
El problema aparece cuando compilo con (GCC) -nostdlib (linkeando las librerias necesarias) y utilizando mainCRTStartup como entry point para reducir el tamaño del ejecutable, funciones innecesarias, etc. Al parecer, al quitar toda esa parte que no me sirve, estoy excuyendo y por eso crashea el programa.
Si compilo normalmente y utilizo main o WinMain el problema no aparece. Funciona todo perfecto
El problema es que al querer obtener un puntero desde una funcion, obtengo un puntero invalido. En la dll puedo verlo correctamente, pero en el programa principal tengo otro valor.
No hace tanto tuve un problema similar al tuyo y pude darle solución con este enlace, suerte lo tenia aun por favoritos : http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/
Claro que se te rompe el programa, porque esa función la utiliza la biblioteca en tiempo de ejecución de C para cargar sus propiedades.
Prueba usando este API nada mas que entre a la funcion mainCRTStartup
http://msdn.microsoft.com/es-es/library/ms235362.aspx
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Prueba usando este API nada mas que entre a la funcion mainCRTStartup
http://msdn.microsoft.com/es-es/library/ms235362.aspx
No porque no estoy compilando con /GS (Buffer Security Check)
Si no usas ninguna libreria de CRT y no te genera el exe con esas dependencias no te debería de fallar.
Aquí te dejo cuales son dichas librerias:
http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx
Realmente deberías usar el punto de entrada habitual, de poco sirve iniciar en CRT y tener que inicializar las librerias tu a mano.
Gracias