Qt 5.6.1 + vs2013 加载自己编写的静态链接库

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/popper0912/article/details/73497996

一、编译自己编写的静态链接库

博主默认大家已经将 VS2013 与 Qt 配置成功,没有配置成功的,自行在网上搜索
1、创建 Qt 新项目,如下
2、创建完项目后,右键你的项目属性,如下
将配置类型更改为 静态库(.lib)
3、编写一个自己的例子,这里博主编写了一个具有 “两个 float 类型数的求和” 功能的类,如下:
.h文件
#ifndef TESTLIB_H
#define TESTLIB_H



class testLib
{
public:
	testLib();
	~testLib();
	float GetSum(float a, float b);
	
private:

};

#endif // TESTLIB_H

.cpp 文件

#include "testlib.h"

testLib::testLib()
{

}

testLib::~testLib()
{

}

float testLib::GetSum(float a, float b)
{
	return a + b;
}

4、右键自己的项目,生成后会在你自己的工程项目中生成一个testLib.lib文件,这便是你自己编写的静态库文件


二、调用自己编写的静态库文件

1、新建一个 Qt 应用程序(博主的工程名字为 testsumlib),如第一部所示,只是这次不需要将配置类型更改为 静态库,这次我们是编写 .exe ,来调用自己编写的静态库。(知道你们聪明,不必多说)

2、将自己编写的静态库项目的头文件 testlib.h 复制到自己的项目中

3、将自己编译后的静态库文件 testLib.lib 添加到自己的项目中,如下操作步骤:
  • 右键项目-链接器-常规,将自己生成的静态链接库目录添加到附加依赖库目录中,如下:
  • 然后将自己的静态库文件名称添加附加依赖项中,如下:
4、编写测试项目(输入两个数, 求和)界面如下:



.h文件
#ifndef TESTSUMLIB_H
#define TESTSUMLIB_H

#include <QtWidgets/QWidget>

class testLib;
class QLabel;
class QLineEdit;

class testsumlib : public QWidget
{
	Q_OBJECT

public:
	testsumlib(QWidget *parent = 0);
	~testsumlib();

public slots:
	void showSum();
private:
	testLib* pSum;
	QLabel* pLabel;
	QLineEdit* pLeftEdit;
	QLineEdit* pRightEdit;
};

#endif // TESTSUMLIB_H

在cpp文件中将 头文件 testlib.h 包含进来即可
.cpp 文件
#include "testsumlib.h"
#include "testlib.h"
#include <QtWidgets/QPushButton>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets\QLabel>
#include <QtWidgets\QLineEdit>

testsumlib::testsumlib(QWidget *parent)
	: QWidget(parent), pSum(new testLib)
{
	QLabel* pLeftNumber = new QLabel("LeftNumber");
	pLeftEdit = new QLineEdit;
	QLabel* pRightNumber = new QLabel("RightNumber");
	pRightEdit = new QLineEdit;
	QHBoxLayout* pUpLayout = new QHBoxLayout;
	pUpLayout->addWidget(pLeftNumber);
	pUpLayout->addWidget(pLeftEdit);
	pUpLayout->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Expanding));
	pUpLayout->addWidget(pRightNumber);
	pUpLayout->addWidget(pRightEdit);

	QPushButton* pButton = new QPushButton;
	pButton->setText("Sum");
	pLabel = new QLabel(this);
	QHBoxLayout* pDownLayout = new QHBoxLayout;
	pDownLayout->addWidget(pLabel);
	pDownLayout->addWidget(pButton);
	
	QVBoxLayout* pVLayout = new QVBoxLayout;
	pVLayout->addLayout(pUpLayout);
	pVLayout->addLayout(pDownLayout);
	setLayout(pVLayout);

	connect(pButton, SIGNAL(clicked()), this , SLOT(showSum()));
}

testsumlib::~testsumlib()
{

}

void testsumlib::showSum()
{
	bool ok;
	float leftNum = pLeftEdit->text().toFloat(&ok);
	float rightNum = pRightEdit->text().toFloat(&ok);

	float SUM = pSum->GetSum(leftNum, rightNum);
	pLabel->setText(QString::number(SUM));
	pLabel->setAlignment(Qt::AlignCenter);
}

此时便可以调用自己编写的静态库,博主也是现学现卖,打算后续用Qt 调用caffe 编译的静态库,用到自己的工程中


参考博客:http://www.cnblogs.com/codingmengmeng/p/6046481.html


展开阅读全文

没有更多推荐了,返回首页