您当前的位置: 首页 >  windows

我什么都布吉岛

暂无认证

  • 3浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

(十七)CMake编写并使用自定义库(Windows)

我什么都布吉岛 发布时间:2022-07-12 11:08:26 ,浏览量:3

一、库的分类

在Windows下库可以分为静态和动态两种。动态库按照链接的时机又可分为两类:

  • 隐式链接。使用即加载,有时候又称为静态链接或者加载时动态链接。因为不需要使用函数指针即可使用其中的函数, 编译器帮你默默链接,使用上非常方便;(本文只讲解这一种)
  • 显式链接。按需加载,必须使用加载DLL语句和设置DLL函数的指针,有时候称为动态加载或者运行时加载。

与静态链接库的区别在于,静态链接会将所有的对象代码复制到可执行程序中,动态链接则只会在可执行程序中放入含有查找DLL的信息。显然动态链接的可执行程序体积更小,所以除了在生成动态库的时候还需要生成对应的导出符号帮助应用程序在运行时调用动态库符号。

与应用程序相比,DLL程序只能有一个实例,而应用程序可以有多个;应用程序能够作为进程加载,可以管理诸如堆栈、全局内存、文件句柄和消息队列之类的资源,DLL并不能做这些事情。[1]

动态库的优点:

  • 节省内存,减少交换。多个进程共享DLL,静态库不能共享;(这就是为什么DLL叫共享库的原因:多个进程共享)
  • 节省了磁盘空间和带宽;
  • 维护容易。静态库必须重新编译生成exe;
  • 新功能方便添加。通过显示链接发现一个DLL方式;
二、库的内容

假设我们需要创建一个动态库,其功能有:

  • 打印一个apple的void printApple()函数
  • 一个计算和的方法int add(int,int)

分别在library.cpp和library.h增加以下内容:

//library.cpp
#include 
#include "library.h"
void hello() {
    std::cout             
关注
打赏
1658157489
查看更多评论
0.0385s