网上大多是将函数封装成dll的教程,类的封装也是基本相似的。
创建DLL
在VS2010中新建一个win32->dll工程。如我建立的工程名为FaceDLL
添加facedll.h的头文件(里面定义dll的接口,调用时会用到)
#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
#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")
然后一样的方法再封装新的类就可以了~
#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。
或者在程序中写入:
#pragma comment(lib,"facedll.lib")
#pragma comment(lib,"heartdll.lib")
之后程序中就可以直接使用封装成DLL的类了:
HRMeasure *hrMea=new HRMeasure();
分享到:
相关推荐
C++ 多个类的DLL封装以及隐式链接和显式链接2种方法调用
c++ 通过 clr 方式 封装 原生 c++ dll , 由c# 对其调用 通过创建c++ clr项目dll_test_net,其内部封装纯c++ dll (dll_test_cpp),然后c#项目 test_net调用dll_test_net。 所有项目由vs2008创建。 防入坑提示: clr...
C++DLL中包含一个类,C#端要调用这个类的函数,重新封装这个类,来供C#端调用
C#调用C++编写的dll,一般都是直接用dllimport,这个资料很多。C++调用C#编写的dll,一般方法都是先用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。
用C++调用C#实例代码,C#封装为DLL。
本资源为C++开发调用7z源码程序,其中,我已封装成了dll程序,下载可直接调用。本程序功能可实现指定文件夹中的多个文件压缩到一个指定文件夹中。该资源是修改之前上传资源后,有人反映缺少文件不能使用的问题。之前...
C#调用C++封装成DLL的结构体及类库, 使用数据结构类型, 使用动态库调用方式,函数入参为结构体,返回参数为结构体,使用out,ref 传统参数
C++调用DLL并调试源码
在C++中将Winsock2进一步封装,导出dll文件,在C#中调用dll 更多的是dll制作和调用练习。
C#调用C++封装成DLL的结构体及类
C++Builder MDI 程序调用 DLL窗体实例。基于 BCB2010
c#调用c++封装的dll,c#与c++存在的数据类型的不一致性,导致在调用的时候会产生数据类型错误导致调用失败
C++调用WebService封装成DLL,供外部调用
1.C#调用C++封装的动态库dll 2.结构体含union共同体的C++转C#示例 3.C#结构体指针的调用演示 ...5.C#动态调用C++dll库示例 6.C#静态调用C++dll库示例 注意:UsbLibDotNet使用时候需要先安装驱动程序才可以正常使用。
JavaScript 调用 C++ 生成的 DLL,DLL 使用 ATL 封装的 ActiveX 控件,仅支持 IE 浏览器。 本资源为整套工程,编译 ATL_API 后,在Debug/Release目录下,使用 IE 打开TestJavaScript.html,点击“Add”按钮查看结果...
硬件提供C++的DLL,实际应用是用C#开发的,可以是winform可以是webapi等,通过新建C++项目对DLL进行再次封装,并提供接口给C#程序使用。
wavelet的dll封装与c++调用matlab
本资源为一个Demo工程,功能是使用C++封装一个两个类并制作DLL(动态链接库),并实现调用。
和之前上传资源不同的是,该项目不是通过7z命令行进行文件压缩,而是从7z源码lzma920直接封装而来的C++ DLL,可直接使用。
通过VS2017,生成dll项目,生成dll,并在另外程序中调用dll。....................