计算机视觉
图像处理

多个类的DLL封装及调用

文章目录

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

创建DLL

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

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

  1. #pragma once
  2. #ifdef FaceLIBDLL
  3. #define FACEAPI _declspec(dllexport)
  4. #else
  5. #define FACEAPI  _declspec(dllimport)
  6. #endif
  7. //可以include需要用到的头文件
  8. #include <opencv2/opencv.hpp>
  9. class FACEAPI  FaceRecognizer
  10. {
  11. public:
  12.     FaceRecognizer();
  13.     ~FaceRecognizer();
  14. /////////////////////////////////////
  15. //类的函数
  16. };

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

  1. #define FaceLIBDLL
  2. #include “stdafx.h”
  3. #include “facedll.h”
  4. #include <opencv2/opencv.hpp>
  5. //////////头文件中函数的实现
  6. FaceRecognizer::FaceRecognizer()
  7. {
  8. }
  9. FaceRecognizer::~FaceRecognizer()
  10. {
  11. }

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

多个类封装DLL

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

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

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

  1. #pragma once
  2. #ifdef HEARTLIBDLL
  3. #define HEARTAPI _declspec(dllexport)
  4. #else
  5. #define HEARTAPI  _declspec(dllimport)
  6. #endif
  7. #include <opencv2/opencv.hpp>
  8. #include “facedll.h”
  9. #include “datadll.h”
  10. class HEARTAPI  HRMeasure
  11. {
  12. };

调用DLL

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

  1. #pragma  comment(lib,”facedll.lib”)
  2. #pragma  comment(lib,”heartdll.lib”)

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

  1. HRMeasure *hrMea=new HRMeasure();

转载注明来源:CV视觉网 » 多个类的DLL封装及调用

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 0超赞 0无聊 0扯淡 0不解 0路过

评论 4

评论前必须登录!