dllimport与dllexport。。
之前写过模块化编程的练习,里面定义导出符号的时候使用了形如下文的代码。
-
#ifdef SYSTEM_EXPORTS
-
#define SYSTEM_API __declspec(dllexport)
-
#else
-
#define SYSTEM_API __declspec(dllimport)
-
#endif
今天同学问是啥意思。。不明。。于是经过同桌指点 终于大概晓得了。。
上面这段代码通常写在.h文件中,我们编译有导出函数的dll时,就用dllexport,这时我们一般在预处理器中已经输入了SYSTEM_EXPORTS,使SYSTEM_API替换成export,
在exe使用的时候应该是import的,此时我们包含这个.h文件,而exe的预处理器中不会包含SYSTEM_EXPORTS,SYSTEM_API就变成import了。
= = 更详细一点来说,我们写dll的时候 需要声明和定义dllexport的函数/类。
而我们用exe来调用dll的时候,必须包含一个带有上述函数/类的dllimport的声明。如果使用这种写法,就可以使用一个.h文件,在dll的时候做export作用,在exe的时候做import作用了。