Acá el código:
// main.h
Código
#ifndef __MAIN_H__ #define __MAIN_H__ #ifndef DLL_MATH #define DLL_MATH __declspec(dllimport) #else #define DLL_MATH __declspec(dllexport) #endif int DLL_MATH suma(int a, int b); int DLL_MATH resta(int a, int b); int DLL_MATH multip(int a, int b); #endif //__MAIN_H__
// main.cpp
Código
#include "main.h" int DLL_MATH suma(int a, int b) { return (a + b); } int DLL_MATH resta(int a, int b) { return (a - b); } int DLL_MATH multip(int a, int b) { return (a*b); }
Como verán es bastante simple, hasta ridículo. Si cambio el orden, es decir, de esta forma:
//main.h
Código
#ifndef __MAIN_H__ #define __MAIN_H__ #ifndef DLL_MATH #define DLL_MATH __declspec(dllexport) #else #define DLL_MATH __declspec(dllimport) #endif int DLL_MATH suma(int a, int b); int DLL_MATH resta(int a, int b); int DLL_MATH multip(int a, int b); #endif //__MAIN_H__
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.