5. _declspec(dllexport)与_declspec(dllimport)

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文件的重复使用了

猜你喜欢

转载自blog.csdn.net/qq_33757398/article/details/81568734