C 多個類的DLL封裝及呼叫

2021-09-01 08:46:08 字數 1620 閱讀 3319

網上大多是將函式封裝成dll的教程,類的封裝也是基本相似的。

在vs2010中新建乙個win32->dll工程。如我建立的工程名為facedll

新增facedll.h的標頭檔案(裡面定義dll的介面,呼叫時會用到)

#pragma once

#ifdef facelibdll

#define faceapi _declspec(dllexport)

#else

#define faceapi _declspec(dllimport)

#endif

//可以include需要用到的標頭檔案

#include class faceapi facerecognizer

;

之後在facedll.cpp中寫函式實現,而且要定義為 facelibdll

#define facelibdll

#include "stdafx.h"

#include "facedll.h"

#include //標頭檔案中函式的實現

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")

然後一樣的方法再封裝新的類就可以了~

#pragma once

#ifdef heartlibdll

#define heartapi _declspec(dllexport)

#else

#define heartapi _declspec(dllimport)

#endif

#include #include "facedll.h"

#include "datadll.h"

class heartapi hrmeasure

呼叫需要各個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封裝及呼叫

專案中需要把一些共通的功能,抽出來做乙個dll來呼叫。因為是以類作為單位的,資料確實少,主要參考了上面那篇博文。需要補充的一點是 程式能夠正常呼叫,但是偶爾會發生accessviolationexception,查到的結果是,函式宣告時未新增 stdcall,導致預設呼叫了 cdeccall。具體解...

C 多個類的DLL封裝及呼叫

網上大多是將函式封裝成dll的教程,類的封裝也是基本相似的。在vs2010中新建乙個win32 dll工程。如我建立的工程名為facedll 新增facedll.h的標頭檔案 裡面定義dll的介面,呼叫時會用到 pragma once ifdef facelibdll define faceapi ...

多個類的DLL封裝及呼叫

cpp view plain copy define facelibdll include stdafx.h include facedll.h include 標頭檔案中函式的實現 facerecognizer facerecognizer facerecognizer facerecognize...