用Visual C++製作VB6可使用的dll
作者: Timothy Lin 於 下午10:40
vb6是一套相當好用的程式設計工具,但是它的缺點就是速度慢。
我用的軟體是Visual C++ 2005 和 Visual Basic 6.0 Professional
假設我的專案名稱為dlltest
首先,開啟vc++,在「新增專案」中選擇「Win32專案」,
因為這個專案檔是空的,所以沒有檔案,我們必須自行新增一個.
注意.cpp及.h的檔名必須相同
記得在header檔中include必要的檔案
# include
# include
在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++
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或上網搜尋。
"用Visual C++製作VB6可使用的dll"
- Timothy's Workspace: 用Visual C++製作VB6可使用的dll (在「Google 網頁註解」中檢視)
沒有留言:
張貼留言