Visual Studio封装静态链接库至新静态库,供程序调用

熟悉Windows开发的人都肯定了解静态链接库和动态链接库。

最近遇到一个问题:

A静态库是使用VS编译,因为C++版本的问题,并不能直接在Qt中被调用,因为会报头文件某处错误。

因为A库很大,同时又不想修改太多A库源文件,所以想到了继续封装A库为B静态链接库,然后可以在Qt中调用B库。

所以,此文便是如何封装静态库,和如何使用静态库调用静态库。

1、先创建静态库文件 MathLibAdd

其中头文件和源文件代码分别如下:

#pragma once
class MathLibAdd
{
public:
	static void Add(int a, int b);
};

#include "MathLibAdd.h"
#include 

void MathLibAdd::Add(int a, int b)
{
	std::cout << "this is MathLibAdd-> Add" << std::endl;
	std::cout << a + b << std::endl;
}

将静态库编译:

Visual Studio封装静态链接库至新静态库,供程序调用_第1张图片

 因为采用的是Debug模式编译,所以在Debug目录中文件如下:

Visual Studio封装静态链接库至新静态库,供程序调用_第2张图片

 2、编写静态库 MathLib

同样的方法创建静态库MathLib

2-1 添加MathLibAdd静态库及配制:

将上一步编译生成的MathLibAdd.lib、MathLibAdd.h文件复制至特定目录

然后在当前创建的静态库文件下右键点击项目名->属性, 配制静态库依赖。

Visual Studio封装静态链接库至新静态库,供程序调用_第3张图片

 在对应的编译模式下,配制VC++目录中的 包含目录、库目录信息,分别添加MathLibAdd库文件的头文件、lib文件目录地址信息。

Visual Studio封装静态链接库至新静态库,供程序调用_第4张图片

 然后编写MathLib库头文件及源代码:

MathLib.h

#pragma once
class MathLib
{
public:
	static void Add(int a, int b);
};



Mathlib.cpp

#include "MathLib.h"
#include 
#include "MathLibAdd.h"


void MathLib::Add(int a, int b){
	std::cout << "this is MathLib -> Add" << std::endl;
	MathLibAdd::Add(a, b);
}

编译MathLib项目,生成文件如下:

Visual Studio封装静态链接库至新静态库,供程序调用_第5张图片

3、写测试程序,测试MathLib静态库

3-1、新建MathLibTest项目

3-2、将上述两部编译生成的MathLibAdd.lib、MathLib.lib两个静态库文件,及MathLib.h头文件复制至特定目录

3-3、配制MathLibTest项目库文件信息

3-3-1、项目属性打开

3-3-1-1、VC++目录配制

Visual Studio封装静态链接库至新静态库,供程序调用_第6张图片

 3-3-1-2、链接器配制

打开链接器配制->输入

在右侧添加依赖项中将MathLib.lib、MathLibAdd.lib的库名添加进去。

3-4、编写测试源代码

// MathLibTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include 
#include "MathLib.h"

int main()
{
    std::cout << "Hello World!\n";
    MathLib::Add(10, 20);
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

4、编译运行,测试成功

Visual Studio封装静态链接库至新静态库,供程序调用_第7张图片

你可能感兴趣的:(c++,ide)