elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado]Ayuda pruebas con DLLs
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado]Ayuda pruebas con DLLs  (Leído 1,375 veces)
noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
[Solucionado]Ayuda pruebas con DLLs
« en: 15 Julio 2012, 22:34 pm »

Bueno estaba haciendo ciertas pruebas creando dlls y llamandolas implicitamente y explicitamente para aprender un poco y ahora que le he puesto algunos argumentos me ejecuta la funcion de dll pero despues de ejecutarla me salta este error:

Código:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.
This is usually a result of calling a function declared with one calling convention with a function
pointer declared with a different calling convention.

El codigo del programa llamador es el siguiente:

main.cpp
Código
  1. #include <Windows.h>
  2. #include <iostream>
  3.  
  4. typedef void (__stdcall *PROC_info)(char *,char *,long *,long *);
  5.  
  6. struct PLUGIN
  7. {
  8. HMODULE dll_entrypoint;
  9. PROC_info info_func;
  10. };
  11.  
  12. int main()
  13. {
  14.  
  15. PLUGIN plugin1;
  16.  
  17. plugin1.dll_entrypoint = LoadLibraryA("C:\\Dll-Test1.dll");
  18. if(plugin1.dll_entrypoint == NULL)
  19. {
  20. FreeLibrary(plugin1.dll_entrypoint);
  21. MessageBoxA(0,"No se encuentra la DLL","Error",0);
  22. return 1;
  23. }
  24. else{
  25. char *Version = "";
  26. char *Autor = "";
  27. long *numAutor = 0;
  28. long *numVersion = 0;
  29.  
  30.  
  31. plugin1.info_func = (PROC_info)GetProcAddress(plugin1.dll_entrypoint,"func1");
  32.  
  33. plugin1.info_func(Version,Autor,numVersion,numAutor);
  34. FreeLibrary(plugin1.dll_entrypoint);
  35. }
  36. system("pause");
  37.  
  38. return 0;
  39. }

Y el codigo de la DLL

plugin_main.h
Código
  1. #define DLLDEXPORT  __declspec(dllexport)   // export DLL information
  2.  
  3. extern "C" {
  4.       DLLDEXPORT void func1(char *, char *,long *,long *);
  5. };
  6.  
  7.  


plugin_main.cpp
Código
  1. #include "plugin_main.h"
  2. #include <windows.h>
  3.  
  4. BOOL APIENTRY DllMain(HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved){
  5. switch (ul_reason_for_call)
  6. {
  7. case DLL_PROCESS_ATTACH: //PROCESO CARGA
  8. break;
  9. case DLL_THREAD_ATTACH: //THREAD CARGA
  10. break;
  11. case DLL_THREAD_DETACH: //THREAD DESCARGA
  12. break;
  13. case DLL_PROCESS_DETACH: //PROCESO DESCARGA
  14. break;
  15. }
  16. return TRUE;
  17. }
  18.  
  19. DLLDEXPORT void func1(char *Version, char *Autor,long *numVersion,long *numAutor)
  20. {
  21. MessageBoxA(0,"Soy el texto","Soy el caption",1);
  22. }


Si alguien me ayuda seria genial ya que despues de frustrarme para que ejecute la funcion ahora me saltan errores.



Pff siento las molestias resulto ser una tonteria...
Lo arregle cambiando en la declaracion de PROC_Info el __stdcall por un __cdecl

Saludos, Noele1995


« Última modificación: 16 Julio 2012, 00:31 am por noele1995 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Res y dlls
Programación Visual Basic
V18s 6 2,557 Último mensaje 10 Agosto 2005, 00:50 am
por byebye
DLLs Genericas con VB6
Programación Visual Basic
Castord 3 4,709 Último mensaje 19 Agosto 2006, 03:17 am
por Castord
Dlls y funciones
Programación Visual Basic
CrashIIX 3 1,459 Último mensaje 8 Enero 2007, 20:08 pm
por CeLaYa
[Ayuda] Manejo de dlls « 1 2 »
.NET (C#, VB.NET, ASP)
Edu 16 7,923 Último mensaje 15 Febrero 2011, 20:51 pm
por Edu
[Ayuda] Proyecto con dlls
.NET (C#, VB.NET, ASP)
Edu 1 2,008 Último mensaje 15 Febrero 2011, 20:44 pm
por [D4N93R]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines