【C++】多個類的DLL封裝及調用

 

【C++】多個類的DLL封裝及調用

分類: 【編程語言】
 

目錄(?)[+]c++

 

網上大可能是將函數封裝成dll的教程,類的封裝也是基本類似的。編程

建立DLL

在VS2010中新建一個win32->dll工程。如我創建的工程名爲FaceDLL編程語言

添加facedll.h的頭文件(裏面定義dll的接口,調用時會用到)函數

 

[cpp]  view plain copy
 
  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.   
  10. class FACEAPI  FaceRecognizer  
  11. {  
  12. public:  
  13.     FaceRecognizer();  
  14.     ~FaceRecognizer();  
  15.   
  16. /////////////////////////////////////  
  17. //類的函數  
  18.   
  19. };  
以後在facedll.cpp中寫函數實現,並且要定義爲 FaceLIBDLL

 

 

[cpp]  view plain copy
 
  1. #define FaceLIBDLL  
  2.   
  3. #include "stdafx.h"  
  4. #include "facedll.h"  
  5. #include <opencv2/opencv.hpp>  
  6.   
  7. //////////頭文件中函數的實現  
  8. FaceRecognizer::FaceRecognizer()   
  9. {     
  10.   
  11. }   
  12.   
  13. FaceRecognizer::~FaceRecognizer()   
  14. {     
  15.   
  16. }   
生成(Build)工程,在debug文件夾中會生成相應的DLL及LIB文件:facedll.dll   facedll.lib

 

多個類封裝DLL

封裝好一個類以後,在後面的類能夠調用這個類生成的dll,再封裝新類的dll。post

須要在工程中添加須要引用的頭文件,如facedll.h。在debug中拷貝facedll.lib文件。在 Properties->Linker->Input->  Additional Dependecies中添加facedll.lib(或寫全路徑:"..\debug\facedll.lib")ui

而後同樣的方法再封裝新的類就能夠了~spa

 

[cpp]  view plain copy
 
  1. #pragma once  
  2. #ifdef HEARTLIBDLL  
  3. #define HEARTAPI _declspec(dllexport)  
  4. #else  
  5. #define HEARTAPI  _declspec(dllimport)  
  6. #endif  
  7.   
  8. #include <opencv2/opencv.hpp>  
  9. #include "facedll.h"  
  10. #include "datadll.h"  
  11.   
  12. class HEARTAPI  HRMeasure  
  13. {  
  14. };  

 

調用DLL

調用須要各個dll的.h、.dll、.lib文件。
將頭文件添加到工程中,並#include到須要用的地方。將lib文件拷貝到項目中,並在 Properties->Linker->Input->  Additional Dependecies 中寫入:facedll.lib;heartdll.lib。
或者在程序中寫入:
[cpp]  view plain copy
 
  1. #pragma  comment(lib,"facedll.lib")  
  2. #pragma  comment(lib,"heartdll.lib")  
以後程序中就能夠直接使用封裝成DLL的類了:
[cpp]  view plain copy
 
  1. HRMeasure *hrMea=new HRMeasure();  
相關文章
相關標籤/搜索