参考此文章:https://blog.csdn.net/elaine_bao/article/details/51784864
1、什么是静态库(.lib)
静态库通常是.lib文件,在编译时从静态库中取出函数和数据,编译到exe文件中,发布软件时不需要这个.lib文件,因为需要的代码已经复制到exe文件当中。
2、什么是动态库(.dll)
动态库通常是.dll文件,在编译时不会将动态库中的文件和数据编译到exe文件中,而是在运行时从dll加载到内存中。如果dll需要修改只要重新发布dll并替换即可,不需要重新编译exe文件。
注意动态库经常也附带一个引入库文件(.lib),但是此lib不同于静态库。引入库仅包含函数和变量的符号名(类似头文件?),而在dll中才有实际的函数及数据。
3、调用dll中的函数必须是已经导出的函数
即类似于public函数才可以被外部调用。
4、隐式加载(.h中)
#pragma comment(lib,"Dll1.lib")
然后在.cpp中:
_declspec(dllimport) int add(int a, int b);
_declspec(dllimport) int subtract(int a, int b);
然后就可以调用add和substract函数了。
5、显式加载
只要在需要的地方使用:
hInst = LoadLibrary(L"Dll1.dll");