在cpp檔中include header檔
# include "dlltest.h"
撰寫函式時,加入「WINAPI」這個字,例如:
dlltest.h
int WINAPI fntest(void);
int WINAPI add1(int number);
dlltest.cpp
int WINAPI fntest(void){
return 0;
}
int WINAPI add1(int number){
return number+1;
}
寫完所有函式後,下一個步驟就是撰寫def定義檔
在def中先加上EXPOTS,然後再把每一個函式的「名稱」逐行加上去。
dlltest.def
EXPORTS
fntest
add1
...
接下來就是vb6的部分
在vb的專案中新增一個模組(module)
在這個module裡面使用以下方法來宣告函式
(注意以下是同一行,不要寫成多行)
Declare Function vb使用時的函式名稱 Lib "dll檔名" Alias "dll裡的函式名稱" (參數) As 回傳型態
vb使用時的函式名稱就是在vb中呼叫這個函式時要使用的名稱。
dll檔名就是剛才用vc++製作並放到system32目錄的dll檔名。
dll裡的函式名稱就是剛才那個dll中的函式名稱,如果與第一項相同就不用寫。
參數就是這個函式要用到的參數。
回傳型態就是這個函式的回傳型態。
例如如果我們要呼叫剛才寫的add1的話就可以這樣寫
Module1.bas
Declare Function LongAdd1 Lib "dlltest" Alias "add1" (ByVal n as Long) As Long
Form1.frm
Private Sub Form_Load()
Form1.Caption = LongAdd1(1)
End Sub
要注意的是,vc++裡面的 int 和 long 在 vb裡面都是 long。還有其他參數轉換的問題請見MSDN或上網搜尋。
沒有留言:
張貼留言