静态库与动态库
静态库

创建
使用VS创建时,可以搜索静态库,实现了逻辑后,然后可以切换到release模式下点击生成解决方案后会生成lib文件
使用
使用时,需要把上一步生成的lib文件复制到当前项目目录下,然后,还有还要把库文件(.h)导入进来,使用#pragma comment(lib,"xxx.lib")和extern 方法的定义,如下图:

或者

动态库


创建
在VS创建DLL和LIB差不多,可以直接搜索动态链接库

导出(vs场景下)
使用时,如果导出的时候,没有声明extern "C",会给函数名添加修饰符,如:

如果不想要这些修饰符也挺简单,只需要把extern "C" __declspec(dllexport) int add(int a,int b);就可以了
还有就是需要在pch.h文件中末尾添加

使用
有两种方式进行调用,参考链接:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90643.html
隐式链接
使用pragma comment(注意,如果库文件无法导入,需要使用extern来声明该方法)
显示链接
使用loadlibray,例如

其中,typedef void (*MYFUNC)(); 创建了一个新的类型名MYFUNC,这个类型是一个指向没有参数并返回void的函数指针。
这里是函数指针,不是指针函数https://www.jb51.net/article/153218.htm
此外,还需要区分一下变量指针和函数指针

这里getProcAddress获取的是地址,然而我需要的是函数,所以这里做一个函数指针转换。
导入类的方法
第一种使用using

这个图片,getProcAddress获取的是一个函数,该函数返回一个类指针。
第二种使用typedef起别名


浙公网安备 33010602011771号