Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zodiak98 en 14 Noviembre 2015, 13:34 pm



Título: [Ayuda] Librería dinámica.
Publicado por: Zodiak98 en 14 Noviembre 2015, 13:34 pm
Bueno, iré al grano, me puse a crear una librería dinámica y para ser honesto no sé si estoy haciendo bien la importación/exportación.

Acá el código:

// main.h
Código
  1.  
  2. #ifndef __MAIN_H__
  3. #define __MAIN_H__
  4.  
  5.  
  6. #ifndef DLL_MATH
  7.    #define DLL_MATH __declspec(dllimport)
  8. #else
  9.    #define DLL_MATH __declspec(dllexport)
  10. #endif
  11.  
  12. int DLL_MATH suma(int a, int b);
  13. int DLL_MATH resta(int a, int b);
  14. int DLL_MATH multip(int a, int b);
  15.  
  16. #endif //__MAIN_H__
  17.  
  18.  

// main.cpp
Código
  1.  
  2. #include "main.h"
  3.  
  4. int DLL_MATH suma(int a, int b) {
  5.    return (a + b);
  6. }
  7.  
  8. int DLL_MATH resta(int a, int b) {
  9.    return (a - b);
  10. }
  11.  
  12. int DLL_MATH multip(int a, int b) {
  13.    return (a*b);
  14. }
  15.  
  16.  

Como verán es bastante simple, hasta ridículo. Si cambio el orden, es decir, de esta forma:

//main.h
Código
  1.  
  2. #ifndef __MAIN_H__
  3. #define __MAIN_H__
  4.  
  5.  
  6. #ifndef DLL_MATH
  7.    #define DLL_MATH __declspec(dllexport)
  8. #else
  9.    #define DLL_MATH __declspec(dllimport)
  10. #endif
  11.  
  12. int DLL_MATH suma(int a, int b);
  13. int DLL_MATH resta(int a, int b);
  14. int DLL_MATH multip(int a, int b);
  15.  
  16. #endif //__MAIN_H__
  17.  
  18.  

Sí funciona, pero a lo mejor he captado mal de dónde he leído, ¿no se suponía que si la macro no estaba definida se debía importar en la DLL, y una vez definida, exportar hacia el programa con el cual la estemos corriendo? Corregidme acá, por favor. :)


Título: Re: [Ayuda] Librería dinámica.
Publicado por: Zodiak98 en 14 Noviembre 2015, 14:06 pm
Oh, ya lo he pillado. No debí precipitarme en publicar esto, mi error. Un moderador por favor cierre el tema. :)