乙個簡單的DLL

2021-07-25 07:41:34 字數 1877 閱讀 2150

最近在you tube上學習一些api的使用,很有收穫,dll沒接觸過,就寫部落格記錄下來,方便自己複習,鞏固知識

乙個簡單的dll //建立win32專案,勾選dll,空專案

*匯出函式宣告

extern "c" _declspec (dllexport)

*三個重要檔案

***.h

***.dll

***.lib

那麼具體怎麼做呢?

首先,建立乙個win32專案,嚮導裡勾選dll,空專案,然後新增標頭檔案和原始檔

.cpp

# include# include"標頭.h"

//dll入口函式就是dllmain

int winapi dllmain(hinstance hinstdll, dword fdwreason, pvoid pvreserved)

//任何乙個dll中的函式前都要加extern "c" _declspec(dllexport),

//至少要加_declspec(dllexport)

//(意思是宣告為dll的匯出函式,只有匯出函式才可以被其他的專案在呼叫

//該dll時呼叫,不宣告的話該函式只能在該dll內部呼叫,無法在外部被呼叫)

//如果是被c++呼叫,還要加上extern "c",c呼叫就不加,所以在標頭檔案裡利用巨集來處理

export bool callback funa(hdc hdc,prect prc,pcstr pstring)

//測試裡就可以呼叫該函式

export _declspec(dllexport) bool callback funw(hdc hdc,prect prc,pcwstr pstring)

.h

# ifdef __cplusplus//如果是c++呼叫

# define export extern "c" __declspec (dllexport)

# else

# define export __declspec (dllexport)

# endif

//宣告

exportbool callback funa(hdc hdc,prect prc,pcstr pstring);

exportbool callback funw(hdc hdc,prect prc,pcwstr pstring);

# ifdef unicode

# define fun funw

# else

# define fun funa

# endif

原始檔和標頭檔案寫好了,就可以生成了,生成後會在debug裡看到兩個檔案,分別是.dll和.lib檔案

其他專案要使用這個dll的話就要用到這兩個檔案和.h檔案,所以再新建乙個win32專案來測試看看,把這三個檔案複製到資料夾中,在測試專案中匯入.h檔案,幷包含,然後右擊測試專案-屬性-鏈結器-輸入-附加依賴項裡,加入.lib檔案

由於該dll只是乙個簡單的示例(輸出一串字元),所以在測試專案的wm_paint訊息就可以呼叫該函式了

乙個 ORACLE 呼叫 DLL 的例子

注 以下程式在delphi7 oracle9i中測試通過 1 首先用delphi編制乙個dll程式,當然用vb,vc其它語言也可以,本人最近常用delphi,所以以下dll採用delphi程式編制 工程檔案 library project1 uses sysutils,classes,unit1 i...

乙個簡單的verlig程式 乙個簡單C程式的介紹

我們前面學了c語言的一些理論知識,今天通過乙個簡單的程式先來看一看c語言程式是什麼樣子。然後再對程式中的 進行介紹。這個語句的功能是進行有關的預處理操作。include稱為檔案包含命令,後面尖括號的內容稱為標頭檔案或首檔案。此處指包含stdio.h系統標頭檔案,在下面主函式中使用的printf 函式...

乙個簡單的Timer

關於system pause 的作用是暫停一下程式,等待按回車鍵繼續執行下一語句,類似getchar 的作用,不改變程式流程 system是呼叫dos的命令列,你還可以呼叫其他的命令,比如 system md d wang 這就是呼叫dos命令中的md命令,在d盤的根目錄下建立乙個資料夾,名字為wa...