DLL动态链接库 总结
看了孙鑫老师的书和笔记 自己做了下 小做总结
DLL 动态库,静态库。动态库节约磁盘空间,静态库体积大。(不是很清楚)
两种加载方式:隐式调用、动态加载。
1.隐式调用 会有两天文件重要:lib、dll
_declspec(dllexport) 放在出口函数前 在lib中记录 lib和dll都放在当前文件目录下
在工程/project 设置/setting 常规/general那一条 选连接/link 对象/库模块 XXX.lib 确定就OK了
在文件中对从dll来的函数定义 extern int add(int a,int b);
extern int subtract(int a,int b);
这种写法一般不用,可以写成//_declspec(dllimport) int add(int a,int b);
//_declspec(dllimport) int subtract(int a,int b);
如果要写个dll的同文件 用宏取代 _declspec(dllimport)
Dll1.h
#ifdef DLL1_API
#else
#define DLL1_API extern "C" _declspec(dllimport) //extern "C" C大写 防止名字变
#endifDLL1_API int _stdcall add(int a,int b);
DLL1_API int _stdcall subtract(int a,int b);
Dll1.cpp的代码:
#define DLL1_API extern "C" _
看了孙鑫老师的书和笔记 自己做了下 小做总结
DLL 动态库,静态库。动态库节约磁盘空间,静态库体积大。(不是很清楚)
两种加载方式:隐式调用、动态加载。
1.隐式调用 会有两天文件重要:lib、dll
_declspec(dllexport) 放在出口函数前 在lib中记录 lib和dll都放在当前文件目录下
在工程/project 设置/setting 常规/general那一条 选连接/link 对象/库模块 XXX.lib 确定就OK了
在文件中对从dll来的函数定义 extern int add(int a,int b);
extern int subtract(int a,int b);
这种写法一般不用,可以写成//_declspec(dllimport) int add(int a,int b);
//_declspec(dllimport) int subtract(int a,int b);
如果要写个dll的同文件 用宏取代 _declspec(dllimport)
Dll1.h
#ifdef DLL1_API
#else
#define DLL1_API extern "C" _declspec(dllimport) //extern "C" C大写 防止名字变
#endifDLL1_API int _stdcall add(int a,int b);
DLL1_API int _stdcall subtract(int a,int b);
Dll1.cpp的代码:
#define DLL1_API extern "C" _