C++動態庫的編寫與類的匯出
阿新 • • 發佈:2019-02-16
本文介紹如何在Visual Studio平臺中編寫C++的動態庫程式
IDE:Visual Studio 2013
1)建立動態庫工程
在VS中建立一個Win32控制檯應用程式,在應用程式設定介面中,選擇DLL,“附加選項”中選擇“空專案”,然後點選“完成”;
在新建立的工程中,新增標頭檔案.h和對應的c++檔案.cpp(本文名字為mydll.h和mydll.cpp)
在.h檔案中輸入以下程式碼:
這段標頭檔案程式碼中,預定義了巨集#ifndef MYDLL_H #define MYDLL_H #ifdef _mydll #define MY_API_DLL _declspec(dllexport) #else #define MY_API_DLL _declspec(dllimport) #endif #endif //mydll.h class MY_API_DLL MyClass { public: double myadd(double a, double b); private: double mymulti(double a,double b); };
MY_API_DLL
這樣寫是為了呼叫動態庫的方便,這樣在實現這個類的CPP檔案頂部加入#define _mydll,則呼叫該動態庫時直接使用該標頭檔案即可,不用再寫_declspec(dllimport)
相應的程式碼,因為呼叫時未定義_mydll巨集,則程式會將巨集定義為:
#define MY_API_DLL _declspec(dllimport)
對應的,在mydll.cpp檔案中輸入對應類中函式的實現程式碼:
編譯工程,會在工程目錄的Debug目錄下生成對應的.dll和.lib檔案;#define _mydll #include "mydll.h" double MyClass::mymulti(double a,double b) { return a*b; } double MyClass::myadd(double a,double b) { double c; c = mymulti(a, b); c = c+a; return c; }
2)編寫測試工程
在VS中新建Win32控制檯工程,將動態庫的.h檔案.dll和.lib檔案拷貝到測試工程中,將.h檔案新增到測試工程中,並新新增一個.cpp檔案(dlltest.cpp),右鍵測試工程“設定專案屬性”--“聯結器”--“輸入”,在附加依賴項中輸入剛才生成的.lib檔名稱,然後點選確定。
在dlltest.cpp中輸入以下程式碼:
編譯通過後,即可正常執行並呼叫動態庫中的MyClass類的相關函式。#include "mydll.h" int main() { double A = 1.0, B = 2.0; MyClass myclass; double c = myclass.myadd(A,B); return 1; }