'################# VB DLL Class 設定 ###########
'### 開啟 VB 的 DLL 專案,並且命名為 ReCallDLL
'### 新增一個 Class 檔案 ,命名為 clsReCallDLL
'###---------- 加入以下程式碼 -----------------
Public Function testAB(a() As Variant, b()As Variant) As String
'組合第一個陣列內容
testAB = "aryStr = " & a(0) & b(0)
End Function
Public Function mathadd(a As Double, b As Double) As Double
'兩數相加
mathadd = a + b
End Function
Public Function mathadd2(a As Variant) As String
'傳回傳入字串
mathadd2 = "The Value is = " & a
End Function
'###----------------------------------------
################# TCL 的執行 Scrip ###########
### TCL 載入 DLL
package require tcom
::tcom::import ReCallDLL.dll ;#採用動態(未安裝 DLL)載入
### 若是靜態(事先安裝DLL)載入則用下面的方法
#set comUtil [::ReCallDLL::clsReCallDLL]
### 建立連接端
set comUtil [::tcom::ref createobject "ReCallDLL.clsReCallDLL"]
### TCL 執行 DLL
set b "1 2" ;#將 b 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set c "3 4" ;#將 c 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set a [$comUtil testAB b c] ;#呼叫 DLL 並執行其中的一個 testAB Function
### 傳回 aryStr = 13
set b 12 ;#將 b 設為單一數字
set c 23 ;#將 c 設為單一數字
set a [$comUtil mathadd bl cl] ;#呼叫 DLL 並執行 mathadd 將兩數相加並傳回
## 傳回 35
請問當我下了
回覆刪除::tcom::import RecallDLL.dll
0x80029c4a {載入類型程式庫/DLL 時發生錯誤。}
這是啥問題呢
應該是你的DLL未載入
回覆刪除可以在VB中直接按下執行,然後由 TCL 去CALL 它(動態載入),甚至可以在VB中設中斷點,
當 TCL Call 到其中的 Function 時就會暫停,
另一個方式就是把程式編譯成DLL並且註冊,
然後使用靜態載入的方式呼叫DLL也行。