【VS+Qt项目开发】在VS2015中导入/创建静态库并使用静态库

        注:静态库——在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的 EXE 文件中了。在vs中新建生成静态库的工程,编译生成成功后,只产生一个.lib文件。

        解决方案文件夹目录如下所示——

        注:我的解决方案路径是   C:\Users\Heylink\Documents\Visual Studio 2015\Projects\MySolution\


1. 直接导入已有静态库

(1)直接将已有的静态库项目拷贝到Common文件夹下,别忘了添加Output和Output\TempFile两个文件夹用以存放输出的相关文件。

        注:我这里导入的静态库名字叫“Common_VS2015”,是前辈们提供的封装函数库



(2)在项目中导入该静态库

        step1:点击解决方案——>右键——>添加——>现有项目



        step2:找到Common文件夹下的.sln文件,点击“打开”



        step3:导入成功!



        OK!导入成功啦!现在我们来看看如何自己创建静态库。


2. 自己创建静态库

        什么情况下需要自己创建静态库呢?一般是为了代码的解耦合以及模块化。我们需要将一些基本的方法进行封装,方便自己以后在别的项目中使用或者提供给别的小伙伴使用。

(1)解决方案——>右键——>添加——>新建项目——>Visual C++——>Win32项目

        注:位置选择解决方案中的Common文件夹下,名字命名为Common_VS2015


(2)选择静态库,预编译头和安全开发生命周期(SDL)检查可要也可不要,我们这里选择不要


(3)完成。

(4)添加相关文件结构/include、/source、/Output、/Output/TempFile


        /include:存放头文件

        /source:存放源文件

        /Output:存放输出文件

        /Output/TempFile:存放中间输出文件

(5)添加头文件、源文件

        注:添加的时候位置要注意,头文件选择include文件夹,源文件选择source文件夹,添加完后源文件中代码会报错,因为分属于不同文件夹,源文件找不到头文件位置。看步骤(6)


头文件CommonLib.h

#pragma once
namespace heylink{

class CommonLib {
public:
	CommonLib();
	~CommonLib();

	int add(int n, int m);

	int minus(int n, int m);

};

}

源文件CommonLib.cpp

#include "CommonLib.h"

namespace heylink{

CommonLib::CommonLib()
{
}

CommonLib::~CommonLib()
{
}

int CommonLib::add(int n, int m)
{
	return n + m;
}

int CommonLib::minus(int n, int m)
{
	return n - m;
}

}

(6)配置头文件路径

Common_VS2015右键——>属性——>C/C++常规;在附加包含目录处填写include文件夹名字即可

注:配置和平台务必选择所有配置所有平台


(7)配置静态库常规属性

    Common_VS2015右键——>属性——>配置属性——>常规

    主要修改以下三项配置:

  •     输出目录:修改为$(SolutionDir)Common\Common_VS2015\Output\$(Configuration)\
  •     中间目录:修改为$(SolutionDir)Common\Common_VS2015\Output\TempFile\$(Configuration)\
  •     目标文件名:修改为common即可

    点击“应用”


(8)生成静态库

Common_VS2015右键——>生成


配置为Debug模式


配置为Release模式


至此,静态库已经生成

3.静态库使用

 (1)检查你的项目属性是否正确

        MySolution(主项目)右键——>属性

        注:为了能够发布32位与64位的安装包,我们的配置最好都是设为面向所有配置+所有平台

        如果只有Win32或者x64,没有所有平台选项的话,点击右侧的配置管理器,进行新建


(2)将静态库源代码的头文件依赖进来,确保在编码时就能够使用而不报错

    添加静态库头文件位置:$(SolutionDir)Common\Common_VS2015\include


(3)将静态库生成的lib文件依赖进来,确保能在编译期间使用

    添加静态库lib所在的位置:$(SolutionDir)Common\Common_VS2015\Output\$(Configuration)\common.lib

    如果你细心观察,你会发现这个路径就是我们之前配置的静态库项目的输出目录,没错,我们就是在这里面去拿生成的lib文件。



注意:每次添加完记得点击“应用”+“确定”


(4)在项目中使用静态库

        在前三步做完后,我们就可以在项目中使用静态库的类和函数了。

        我在主项目中创建了一个简单的计算器UI,部分代码如下所示:

MySolution.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_MySolution.h"
#include "CommonLib.h"

using namespace heylink;

class MySolution : public QMainWindow
{
	Q_OBJECT
	public:
		MySolution(QWidget *parent = Q_NULLPTR);
		~MySolution();
	private:
		CommonLib * m_commonLib; //静态库中的类
		Ui::MySolutionClass ui;
	private slots:
		//槽函数,计算两数之和
		void calcSlot();
};
MySolution.cpp
#include "MySolution.h"

MySolution::MySolution(QWidget *parent)
		: QMainWindow(parent)
{
	ui.setupUi(this);
	m_commonLib = new CommonLib();
	QObject::connect(ui.calcButton, SIGNAL(clicked()), this, SLOT(calcSlot()));
}

MySolution::~MySolution() {
	delete m_commonLib;
}

void MySolution::calcSlot()
{
	int firstvalue = ui.firstValue->text().toInt();//取出第一个文本转化为整数类型  
	int secondvalue = ui.secondValue->text().toInt();
	int resultvalue = m_commonLib->add(firstvalue, secondvalue);//调用静态库方法
	ui.resultValue->setText(QString::number(resultvalue));
}

运行结果:


函数调用成功~

大功告成!

欢迎到我的GitHub主页下载项目源码~

返回《Visual Studio 2015开发Qt项目实战经验分享


猜你喜欢

转载自blog.csdn.net/lhl1124281072/article/details/80028854