編寫DLL時一些關鍵詞解釋以及舉例

2021-08-15 04:01:10 字數 1473 閱讀 6307

1、extern 關鍵字:

使用該關鍵字,可以使得函式名在dll中名稱不變。可以使用depends工具檢視dll中的匯出函式。因為c++中有函式過載,所以不要加extern 「c」

2、__declspec(dllexport)    將乙個函式聲名為匯出函式

3、__declspec(dllimport) 將dll中的某函式匯入到當前檔案中,如果dll中沒有變數,尤其是靜態變數,其實也不需要。

c++匯出整個類:

標頭檔案:

#ifdef  dll_test_api

#else

#define dll_test_api _declspec(dllimport)

#endif

class dll_test_api cdlltest

;

原始檔:原始檔中,定義方法或者屬性和普通類一樣,不需要加dll_test_api

#define dll_test_api     _declspec(dllexport)

#include 「dlltest.h」

這樣,在dll編譯時dll_test_api被定義為_declspec(dllexport),而且客戶端程式編譯時它被定義為_declspec(dllimport)。

匯出部分方法:

在方法前面新增__declspec(dllexport),但是要注意,要匯出建構函式和析構函式,不然定義不了物件。還有種方法,定義乙個介面,返回該類的乙個物件。

呼叫方式:

1.靜態呼叫:

執行dll的標頭檔案以及lib庫路徑:

#pragma comment(lib,」dlltest.lib」)

2.動態呼叫:

首先宣告乙個def檔案,指定庫名以及要匯出的函式名

library  「dlltest」

exports

getinstance = getinstance

**中載入庫:

hmoudle hmod = loadlibrary( _t(「dlltest.dll」) );
載入函式:

函式指標型別 pfgetinstance = (函式指標型別)getprocaddress(「函式名」); //在def檔案中定義的

解除安裝庫:

freelibrary (hmod);

使用說明

c plus plus一些重要的關鍵詞

sizeof求資料型別佔記憶體的位元組數,用法sizeof getchar讀入函式的一種,返回型別為int型,為輸入的ascii碼或eof,該函式包含在stdio.h標頭檔案中,用法a getchar 這種函式任何乙個字元都可以輸入,而cin不能輸入空格 回車。輸入的字元會儲存在鍵盤緩衝區中,直到按...

編寫sql語句一些關鍵詞的注意事項

1.資料庫中的左連線 left join 和右連線 right join 區別 left join right join inner join相關 關於左連線和右連線總結性的一句話 左連線where只影響右表,右連線where只影響左表。left join 以左表為基準,對於右表是多舍少補空 sel...

程式設計裡的一些不好分類的關鍵詞

1,dip dependency inversion principle 依賴倒置原則 ioc inversion of control 控制反轉 dip的具體實現方式 di dependency injection 依賴注入 ioc的具體實現方式 ioc容器 由容器控制程式之間的關係,而非傳統實現...