VB 開發介面快,但底層運算、硬體操作、高效能演算法受限。VC 擅長系統級編程、複雜資料結構、高速運算。將核心邏輯封裝為 VC DLL,VB 負責 UI 與業務流程,發揮雙方優勢。
extern "C" __declspec(dllexport) void ReadString(void) {
// 核心功能實現
}
Private Declare Function ReadString Lib "commication.dll" () As Long
Call ReadString ' 僅觸發執行,無資料交換
extern "C" __declspec(dllexport) bool ReadString(bool receive) {
return receive; // 原樣返回
}
Private Declare Function ReadString Lib "commication.dll" _
(ByVal send As Boolean) As Boolean
Dim send As Boolean, result As Boolean
send = False
result = ReadString(send)
' result 為 False
原則:VB 端統一用 `ByVal` 傳值 (字串除外),類型大小需嚴格對應。
| VC 類型 | VB 聲明 | 備註 |
|---|---|---|
| ATOM, WORD, SHORT | ByVal var As Integer | 16 位有號/無號 |
| BOOL | ByVal var As Boolean | VC 4 字節,VB 2 字節,慎用,建議改用 Long |
| BYTE, CHAR | ByVal var As Byte | 8 位 |
| COLORREF, DWORD, LONG, HANDLE*, LPARAM, WPARAM, LRESULT | ByVal var As Long | 32 位,VB Long 為有號,注意無號邊界 |
| INT, UINT | ByVal var As Long | VC 通常 32 位 |
| LPSTR, LPCSTR | ByVal var As String | VB 自動 BSTR→ANSI 轉換 |
| LPVOID | ByVal var As Any | 任意指標,字串時需 ByVal |
| LPRECT, 自定義結構體 | ByRef var As UserType | 傳址,結構體需對齊一致 |
| VOID | Sub 程序 | 無返回值 |
本文建立了 VB/VC 互通的最小知識集:導出函數規範、類型對照表、呼叫慣例、部署要點。下一篇將深入字串、陣列、結構體、回調函數等進階場景,敬請期待。