dll(动态链接库)是包含函数和数据的模块的集合。
它可以导出数据也可以导出函数以供其它的dll调用。
一个dll的工程项目,编译成功后,会产生一个.lib文件和一个.dll文件
动态库中的lib:不包含任何代码,只包含一些辅助信息,要跟dll一起使用,起到隐式链接的作用
动态库中的dll:包含所有导出函数实现代码, 在进程运行时加载到进程内存空间中
1 如何给dll加上导出函数?
1.首先在要导出的dll项目中, 给要导出的函数 加上函数的导出标志:
法一:
extern "C" __declspec(dllexport)
法二:
在源文件中添加一个def文件, 在里面写上EXPORTS, 再写上导出的函数名
如何导入dll里的函数?
法一(显式链接)
导入 dll的项目中先include
法二(隐式链接)
注意: 下面这个第3步是错的, 正确的写法应该是
define DLL_IMPORT extern “C” __declspec(dllimport)
若再导入这个dll项目的头文件, 声明函数这步也可以省略了
前提是dll项目的头文件要像这样写:
#ifdef YTH_EXPORTS
# define SPEC dllexport
#else
# define SPEC dllimport
#endif
extern "C"
{
__declspec(SPEC)int __cdecl add(int a, int b);
__declspec(SPEC)int __cdecl sub(int a, int b);
}