【C++】多个类的DLL封装及调用
2012-07-11 20:07
375 查看
网上大多是将函数封装成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。
需要在工程中添加需要引用的头文件,如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的.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();
创建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();
相关文章推荐
- C#调用使用C++\CLI封装的标准C++ DLL问题:无法访问受保护的内存,这通常指示其他内存已损坏
- c++封装dll供c#调用
- C#调用C++Dll封装时遇到的一系列问题
- C++封装dll并用C#调用(范例),解决C#调用C++的dll找不到入口点异常
- c#调用c++封装dll 参数为字符串输出函数的解决办法
- 【C++】多个类的DLL封装及调用
- 学习使用C++封装DLL并调用
- C#调用C++Dll封装时遇到的一系列问题
- 【C++】多个类的DLL封装及调用
- C# wpf 封装成dll供C++调用
- 【C++】多个类的DLL封装及调用
- C#调用C++Dll封装时遇到的一系列问题
- 将c++封装成dll库及vs调用dll
- C#调用C++Dll封装时遇到的一系列问题
- 【C++】多个类的 DLL 封装及调用
- 将C++源码封装为dll,并提供接口给调用
- C# 发中调用一个采用C++封装好的dll, 其结构体中的二维数转换
- C++ 多个类的DLL封装以及隐式链接和显式链接2种方法调用
- 关于C++调用C#封装的dll后,获取C#中string返回值的问题
- 【C++】多个类的DLL封装及调用