DLL动态链接库 总结 看了孙鑫老师的书和笔记 自己做了下 小做总结

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" _declspec(dllexport)

.cpp 别忘了头文件 #include "Dll1.h" #include
2.动态加载
还有一个写.txt 改成后缀.def
LoadLibrary();

HINSTANCE hInst;
    hInst=LoadLibrary("DLL2.dll");
    typedef int (*ADDPROC) (int a,int b);
    ADDPROC add=(ADDPROC)GetProcAddress(hInst,"add");
不用extern那些 ,不用link 就OK了

你可能感兴趣的:(dll,api,磁盘,c)