您的位置:首页 > 编程语言 > C语言/C++

【C++】多个类的DLL封装及调用

2015-01-19 10:01 429 查看

【C++】多个类的DLL封装及调用

分类: 【编程语言】2012-07-11 18:53 6399人阅读 评论(12) 收藏 举报
dllc++includebuild2010

目录(?)[+]

网上大多是将函数封装成dll的教程,类的封装也是基本相似的。

创建DLL

在VS2010中新建一个win32->dll工程。如我建立的工程名为FaceDLL

添加facedll.h的头文件(里面定义dll的接口,调用时会用到)

[cpp] view plaincopy

#pragma once

#ifdef FaceLIBDLL

#define FACEAPI _declspec(dllexport)

#else

#define FACEAPI _declspec(dllimport)

#endif

//可以include需要用到的头文件

#include <opencv2/opencv.hpp>

class FACEAPI FaceRecognizer

{

public:

FaceRecognizer();

~FaceRecognizer();

/////////////////////////////////////

//类的函数

};

之后在facedll.cpp中写函数实现,而且要定义为 FaceLIBDLL

[cpp] view plaincopy

#define FaceLIBDLL

#include "stdafx.h"

#include "facedll.h"

#include <opencv2/opencv.hpp>

//////////头文件中函数的实现

FaceRecognizer::FaceRecognizer()

{

}

FaceRecognizer::~FaceRecognizer()

{

}

生成(Build)工程,在debug文件夹中会生成相应的DLL及LIB文件:facedll.dll facedll.lib

多个类封装DLL

封装好一个类之后,在后面的类可以调用这个类生成的dll,再封装新类的dll。

需要在工程中添加需要引用的头文件,如facedll.h。在debug中拷贝facedll.lib文件。在 Properties->Linker->Input-> Additional Dependecies中添加facedll.lib(或写全路径:"..\debug\facedll.lib")

然后一样的方法再封装新的类就可以了~

[cpp] view plaincopy

#pragma once

#ifdef HEARTLIBDLL

#define HEARTAPI _declspec(dllexport)

#else

#define HEARTAPI _declspec(dllimport)

#endif

#include <opencv2/opencv.hpp>

#include "facedll.h"

#include "datadll.h"

class HEARTAPI HRMeasure

{

};

调用DLL

调用需要各个dll的.h、.dll、.lib文件。
将头文件添加到工程中,并#include到需要用的地方。将lib文件拷贝到项目中,并在 Properties->Linker->Input-> Additional Dependecies 中写入:facedll.lib;heartdll.lib。
或者在程序中写入:

[cpp] view plaincopy

#pragma comment(lib,"facedll.lib")

#pragma comment(lib,"heartdll.lib")

之后程序中就可以直接使用封装成DLL的类了:

[cpp] view plaincopy

HRMeasure *hrMea=new HRMeasure();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: