1. 程式人生 > >C++動態庫的編寫與類的匯出

C++動態庫的編寫與類的匯出

本文介紹如何在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檔案中輸入對應類中函式的實現程式碼:
#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;
}
編譯工程,會在工程目錄的Debug目錄下生成對應的.dll和.lib檔案;

2)編寫測試工程

在VS中新建Win32控制檯工程,將動態庫的.h檔案.dll和.lib檔案拷貝到測試工程中,將.h檔案新增到測試工程中,並新新增一個.cpp檔案(dlltest.cpp),右鍵測試工程“設定專案屬性”--“聯結器”--“輸入”,在附加依賴項中輸入剛才生成的.lib檔名稱,然後點選確定。

在dlltest.cpp中輸入以下程式碼:

#include "mydll.h"


int main()
{
	double A = 1.0, B = 2.0;

	MyClass myclass;
	double c = myclass.myadd(A,B);

	return 1;
}
編譯通過後,即可正常執行並呼叫動態庫中的MyClass類的相關函式。