1._declspec(dllexport)修饰符
将一个函数声明为导出函数,表示这个函数要被包含它的程序之外的程序调用,一般用于DLL中
用法:
_declspec(dllexport) void fun(int a)
{
printf("%d\n",a);
}
2._declspec(dllimport)修饰符
声明一个导入函数,是说这个函数是从别的DLL导入,一般使用在使用dll文件的外部项目中
注意:_declspec(dllimport)可省略,但如果使用此关键字,编译器将生成更有效的代码
3._declspec(dllexport)与_declspec(dllimport)的使用方法
具体使用方法可参考我的博客:动态链接库的生成和使用
4.改进
我们已经知道,在导出DLL时,.h头文件中每个函数的声明前面要写_declspec(dllexport),而在外部项目使用导出的函数时,在.h头文件中对函数的声明又要改成_declspec(dllimport),这样很是麻烦,如何能写一个两用的.h头文件,只之能在DLL项目和外部项目中都能使用呢
那就是结合宏使用:
#ifdef _DLL_EXPORTS
#define DLL_API _declspec(dllexport)
#else
#define DLL_API _declspec(dllimport)
#endif
这样我们在DLL项目中定义:
#define _DLL_EXPORTS
而在外部项目不定义这个宏,这样就能使用.h文件的重复使用了