静态库与动态库
静态库
创建
使用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获取的是一个函数,该函数返回一个类指针。