静态库与动态库

参考链接:https://www.bilibili.com/video/BV1N84y1J7hC/?spm_id_from=333.337.search-card.all.click&vd_source=91219057315288b0881021e879825aa3

静态库

创建

使用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起别名

posted @ 2024-06-22 20:52  放学别跑啊  阅读(2)  评论(0编辑  收藏  举报