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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 1,561 veces)
davrodgar1

Desconectado Desconectado

Mensajes: 1


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

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 pm por engel lex » En línea

Borito30


Desconectado Desconectado

Mensajes: 481


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

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 pm 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.412


ASMático


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

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 7,217 Último mensaje 3 Agosto 2010, 00:00 am
por farresito
Allegro.h en C::B y Mingw
Programación C/C++
ie8 0 2,707 Último mensaje 17 Enero 2011, 22:14 pm
por ie8
Instalador offline de MinGW
Software
Lawdown 0 2,318 Último mensaje 15 Diciembre 2011, 00:15 am
por Lawdown
problema al compilar con mingw
Programación C/C++
Drewermerc 1 1,902 Último mensaje 17 Abril 2014, 05:49 am
por nolasco281
Instalación compilador GCC para ANSI C ¿32 o 64 bits? ¿MinGW o mingw-w64?
Programación C/C++
pacobsas 2 2,783 Último mensaje 10 Mayo 2016, 22:42 pm
por pacobsas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines