Duplicar posible:
Windows & C++: extern & __declspec(dllimport)
Why/when is __declspec(dllimport) not needed?lo que hace __declspec (dllexport) hacer, cuando agregarlo antes de una función de importación
Quiero escribir un proyecto de DLL. Este proyecto incluye varios archivos DLL. Son dependiente. Defino algunas macros como sigue:
#ifdef MYDLL_DECL1
#define DLL_DECL __declspec(dllexport)
#else
#define DLL_DECL __declspec(dllimport)
#endif
he definido MYDLL_DECL1 ... MYDLL_DECLn para cada módulo. Porque pensé que si definía la misma macro no funcionaría. Pero realmente quiero definir solo una macro, y escribí un testbed. Tengo dos módulos. En el archivo fuente del segundo moudle. Escribo código como sigue:
#define MYDLL_DECL
#include "moudle1.h"
#include "moudle2.h"
Si utilizo el mismo nombre de la macro "MYDLL_DECL", para el archivo de la cabeza de modle1 he definido "MYDLL_DECL", por lo que "DLL_DECL" es igual a '__declspec (dllexport)'. En realidad, en el módulo2 debería ser igual a "__declspec (dllimport)", porque module2 import module1. Pero lo encontré funcionó cuando simplemente defino una misma macro para dos módulos. Y también me parece que el OpenCV también utiliza este MetWeck en su biblioteca
... ¿Qué? Puede usar '__declspec (dllimport)' directamente sin necesidad de definir su propia macro! –
http://stackoverflow.com/questions/4489441/why-when-is-declspec-dllimport-not-needed – Mohammad
__declspec (dllimport) es un especificador de C/C++. Entonces puedo usar – Samuel