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


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Usar una dll en MinGw
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Usar una dll en MinGw  (Leído 194 veces)
davrodgar1

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Usar una dll en MinGw
« en: 13 Marzo 2017, 15:12 »

Buenas,

Como indica el titulo quiero llamar a una función de una dll, aunque el objetivo final es crear una dll donde se use una función que se llama de una dll aun me encuentro en el primer paso.

Cuento con una dll creada por un tercero por lo que poco puede responder sobre ella, además cuento con un .h de la misma.

Por ahora he intentando llevar a cabo este programa

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <iostream>
  4.  
  5.  
  6. typedef double (CALLBACK* CPType)(const char *Output, const char *Name1, double Prop1, const char *Name2, double Prop2, const char *Ref); // Prototipo para poder utilizar Coolprops
  7.  
  8.  
  9. HINSTANCE dllHandle;
  10. CPType CPPtr;
  11.  
  12. int main(void){
  13. double ro;
  14. dllHandle = LoadLibrary("CoolProp.dll");
  15. if (!dllHandle) {
  16.      std::cout << "Error en la carga dll\n";
  17.   } else {
  18.  
  19. CPPtr = (CPType)GetProcAddress(dllHandle,"PropsSI");
  20.  
  21.  
  22. ro = CPPtr("D","P",100000,"T",273.15,"water");
  23. std::cout<<ro;
  24.  
  25. }
  26. system("PAUSE");
  27. return 0;
  28.  
  29. }

pero no carga la dll correctamente, saltando siempre el mensaje Error en la carga dll.

Para compilar estoy usando MinGw, estando en una misma carpeta la dll y el cpp por medio del comando g++ -o ejecutable código.cpp

Un saludo,
David


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 13 Marzo 2017, 15:26 por engel lex » En línea

Ragaza


Desconectado Desconectado

Mensajes: 448


Ver Perfil
Re: Usar una dll en MinGw
« Respuesta #1 en: 15 Marzo 2017, 16:55 »

Para cargar la libreria:
Código
  1. HINSTANCE hGetProcIDDLL = LoadLibrary("libreria");´

Para resolver su funcion:
Código
  1. f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
  2.  if (!funci) {
  3.    std::cout << "could not locate the function" << std::endl;
  4.    return EXIT_FAILURE;
  5.  }

En la dll le defines el export para poder utilizarla:
Código
  1. int __declspec(dllexport) __stdcall funci() {
  2.   // ...
  3. }


« Última modificación: 15 Marzo 2017, 17:20 por Ragaza » En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
ivancea96


Desconectado Desconectado

Mensajes: 3.121


ASMático


Ver Perfil WWW
Re: Usar una dll en MinGw
« Respuesta #2 en: 15 Marzo 2017, 16:59 »

Si hay un error, el código del error lo obtendrás llamando a GetLastError. Para ver el texto de ese código de error, tienes la función Formatmessage. De todos modos, si no quieres utilizar FormatMessage, tienes esta web con los códigos de error: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
MinGW
Programación C/C++
farresito 9 3,573 Último mensaje 3 Agosto 2010, 00:00
por farresito
Allegro.h en C::B y Mingw
Programación C/C++
ie8 0 1,402 Último mensaje 17 Enero 2011, 22:14
por ie8
problema al compilar con mingw
Programación C/C++
Drewermerc 1 496 Último mensaje 17 Abril 2014, 05:49
por nolasco281
CEF Chromium compilando con Mingw
Programación C/C++
Maurice_Lupin 0 392 Último mensaje 27 Junio 2015, 17:54
por Maurice_Lupin
Instalación compilador GCC para ANSI C ¿32 o 64 bits? ¿MinGW o mingw-w64?
Programación C/C++
pacobsas 2 518 Último mensaje 10 Mayo 2016, 22:42
por pacobsas
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines