C++ 把类封装成静态链接库

目录

一、动态链接库和静态链接库的区别

二、对比

1、静态链接库 (Static Library)

2、动态链接库 (Dynamic Library)

三、制作步骤

1. 创建类头文件

2. 实现类

3. 创建静态链接库工程

4. 构建静态链接库

5. 使用静态链接库

6、添加静态库和头文件路径


一、动态链接库和静态链接库的区别

静态链接库(Static Library)和动态链接库(Dynamic Library)是两种不同的代码复用和模块化方法。它们在构建、链接、分发和使用方面有许多重要的区别。

二、对比

1、静态链接库 (Static Library)

  1. 文件扩展名:在Windows中通常是.lib,在Linux中是.a
  2. 链接时间:在编译时将库代码复制到每个使用它的可执行文件中。
  3. 运行时依赖:不需要在运行时提供库文件,因为库代码已经包含在可执行文件中。
  4. 文件大小:由于每个可执行文件都包含库代码,所以生成的可执行文件较大。
  5. 版本控制:更容易控制和测试,因为库代码在编译时已经确定,不会在运行时改变。

2、动态链接库 (Dynamic Library)

  1. 文件扩展名:在Windows中通常是.dll,在Linux中是.so
  2. 链接时间:在编译时生成对库的引用,而不复制库代码。实际的库代码在运行时加载。
  3. 运行时依赖:需要在运行时提供库文件。
  4. 文件大小:由于库代码不包含在可执行文件中,所以生成的可执行文件较小。
  5. 版本控制:库文件可以独立更新,多个可执行文件可以共享同一个库文件。

三、制作步骤

将一个C++类定义成静态链接库(Static Library),与动态链接库(DLL)的步骤类似,但有一些不同。

1. 创建类头文件

定义你要封装的类。例如,创建一个名为MyClass的类:

// MyClass.h
#pragma once

class MyClass {
public:
    MyClass();
    ~MyClass();
    void SayHello();
};

2. 实现类

实现这个类的方法:

// MyClass.cpp
#include "MyClass.h"
#include <iostream>

MyClass::MyClass() {}

MyClass::~MyClass() {}

void MyClass::SayHello() {
    std::cout << "Hello from MyClass!" << std::endl;
}

3. 创建静态链接库工程

在 Visual Studio 中创建一个新的静态链接库工程:

  1. 打开 Visual Studio,创建一个新的项目。
  2. 选择 Static Library (LIB) 项目类型。
  3. 添加 MyClass.hMyClass.cpp 文件到项目中。

4. 构建静态链接库

构建工程,将会生成一个 .lib 文件(例如 MyLibrary.lib)。

5. 使用静态链接库

要使用这个静态链接库,需要在另一个项目中导入它:

// main.cpp
#include <iostream>
#include "MyClass.h"

int main() {
    MyClass myClass;
    myClass.SayHello();
    return 0;
}

在你的新项目中,确保以下几点:

  1. 将生成的 MyLibrary.lib 文件添加到新项目的链接器输入中。
  2. 确保 MyClass.h 头文件在新项目的包含路径中。

6、添加静态库和头文件路径

在新项目中配置静态库和头文件路径:

  1. 右键点击新项目,选择“属性”。
  2. 在左侧面板中选择“C/C++” -> “常规”。
  3. 在“附加包含目录”中添加静态库的头文件路径。
  4. 在左侧面板中选择“链接器” -> “常规”。
  5. 在“附加库目录”中添加静态库文件的路径。
  6. 在左侧面板中选择“链接器” -> “输入”。
  7. 在“附加依赖项”中添加静态库文件名(例如 MyLibrary.lib)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哦里 哦里哦里给

你的鼓支持是我分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值