C++ 把类封装成DLL,LIB

参考链接:https://blog.csdn.net/xiaowei_cqu/article/details/7737682

1.概述

这篇blog主要是写了如何封装一个类,生成一个dll,lib文件。然后在一个新的工程中来调用这个类。

2.实现

首先新建一个dll工程,这一步的目的是生成dll,lib文件,具体可以参考我前面bolg.

1生成.h文件,这里我命名为time.h,也就是类的标头文件,

#ifndef MYTIME_H
#define MYTTME_H
class __declspec(dllexport) Time;
class Time
{
public:
	Time();
	void output();



};
#endif

在这里我是用这种方式来导出类的,网上还有如下一种模板,大家可以参考一下。这种方式我的理解就是在后面调用dll文件时候,不用修改我们的标头文件 。

#pragma once
#ifdef FaceLIBDLL
#define FACEAPI _declspec(dllexport)
#else
#define FACEAPI  _declspec(dllimport)
#endif
//可以include需要用到的头文件
#include 
 
class FACEAPI  FaceRecognizer
{
public:
	FaceRecognizer();
	~FaceRecognizer();
 
/////////////////////////////////////
//类的函数
 
};

2.类对应的实现函数:

#include "stdafx.h"
#include "time.h"
#include
Time::Time()
{}
void Time::output()
{
	using namespace std;
	cout << "今天是2018年10月8号,世界你好~~!!!" << endl;
	cout << "这是一个成功地类!!" << endl;

}

这是类对应函数的实现,这里我命名为time.cpp。然后进行编译,我们可以在工程目录debug下面找到dll,lib文件。

3.调用dll文件。

类和一般的函数封库,在这里有点不同,这里多了一个.h文件,如果我们只是一个简单的函数来封库,我们可以只要有dll,lib文件就可以了,但是在这里,我们有.h. lib dll文件三个。dll 和lib文件处理方式和之前相同,具体可以参考我前面blog。这里主要说的是.h文件的处理。网上称这一步是类的导出,具体的定义我也在书上面看到。废话不多说,新建一个工程,添加一个标头文件,这里我还是用time.h来命名。

#ifndef MYTIME_H
#define MYTTME_H
class __declspec(dllimport) Time;
class Time
{
public:
	Time();
	void output();



};
#endif

这里标头文件起的作用是接口作用,与一般函数不同的是,函数的接口比较简单,类的接口比较多。从另外一个方面来说,标准的封装是应该有.h文件的,这一别人才能看到我们dll文件里面封装的是什么,根据,h文件来使用我们的封装。

测试程序如下:

#include "stdafx.h"
#include"time.h"
int main()
{
	Time c;
	c.output();
	return 0;
}

这里我们可以很容易的用一个类,代码也很简洁。

4.总结

这篇blog主要是总结了.h .dll .lib 三个文件的封装和怎么使用dll文件,主要是起一个笔记作用,也给各位参考一下。如果有什么不明白的可以@我,特别提醒,如果是刚开始封库,可以看看我前面一篇blog。

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