全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1945
推到 Plurk!
推到 Facebook!

VB 可呼叫用DELPHI 作出的dll嗎?

 
cbrskimo
一般會員


發表:9
回覆:14
積分:4
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-04-10 11:20:52 IP:211.21.xxx.xxx 未訂閱
請問VB 可呼叫用DELPHI 作出的dll嗎?
lee
站長


發表:55
回覆:173
積分:45
註冊:2002-02-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-04-10 11:49:14 IP:61.219.xxx.xxx 未訂閱
VB我不熟,但應該是可以,只是要注意存到DLL中的export name 是不是有多加底線或其它符號,還有就是參數型態的對映問題!    ~~~Delphi K.Top網站總管~~~
------
~~~Delphi K.Top網站總管~~~
cbrskimo
一般會員


發表:9
回覆:14
積分:4
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-04-10 15:41:06 IP:211.21.xxx.xxx 未訂閱
引言: VB我不熟,但應該是可以,只是要注意存到DLL中的export name 是不是有多加底線或其它符號,還有就是參數型態的對映問題! ~~~Delphi K.Top網站總管~~~
用DELPHI作出的dll,Delphi 可以呼叫,但用VB卻不能呼叫,一直出現沒有目前位置可用的程式碼 以從此站下載的dll--建立DLL檔與使用DLL檔的程式範例 如下 library DllLib; exports KTConfirm... unit UConfirm; // dlllib.dll中提供給外部呼叫用的函式 function KTConfirm(Title:string):Boolean;export; 而用VB 呼叫 DllLib.dll 必須用call API 如下 Public Declare Function KTConfirm Lib "DllLib.dll" (ByVal Title As String) As Boolean //此為一個button click Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim b1 As Boolean If Me.KTConfirm("test") Then //當執行到此行就出現沒有目前位置可用的程式碼 MsgBox("ok") End If End Sub 各位高手請指教指教 謝謝!
lee
站長


發表:55
回覆:173
積分:45
註冊:2002-02-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-04-10 20:48:05 IP:61.219.xxx.xxx 未訂閱
有沒有可能是procedure名稱大小寫的問題,若都改為大寫?    ~~~Delphi K.Top網站總管~~~
------
~~~Delphi K.Top網站總管~~~
cbrskimo
一般會員


發表:9
回覆:14
積分:4
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-04-11 08:25:26 IP:211.21.xxx.xxx 未訂閱
引言: 有沒有可能是procedure名稱大小寫的問題,若都改為大寫? ~~~Delphi K.Top網站總管~~~
改成大寫後,錯誤訊息一樣,真的很謝謝您!
lee
站長


發表:55
回覆:173
積分:45
註冊:2002-02-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-04-11 08:41:22 IP:61.219.xxx.xxx 未訂閱
可否附上一個用VB可以呼叫的.DLL檔做為測試用?    ~~~Delphi K.Top網站總管~~~
------
~~~Delphi K.Top網站總管~~~
weijh
一般會員


發表:0
回覆:3
積分:0
註冊:2002-04-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-04-14 00:21:21 IP:203.204.xxx.xxx 未訂閱
以從此站下載的dll--建立DLL檔與使用DLL檔的程式範例 如下 library DllLib; exports KTConfirm... unit UConfirm; // dlllib.dll中提供給外部呼叫用的函式 function KTConfirm(Title:string):Boolean;export; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. 如果使用了String型別 在Project內必須使用Borlanmm作記憶體管理 2. 將export改成 function KTConfirm(Title:string):Boolean;stdcall;
cbrskimo
一般會員


發表:9
回覆:14
積分:4
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-04-17 11:46:52 IP:211.21.xxx.xxx 未訂閱
引言: 以從此站下載的dll--建立DLL檔與使用DLL檔的程式範例 如下 library DllLib; exports KTConfirm... unit UConfirm; // dlllib.dll中提供給外部呼叫用的函式 function KTConfirm(Title:string):Boolean;export; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. 如果使用了String型別 在Project內必須使用Borlanmm作記憶體管理 2. 將export改成 function KTConfirm(Title:string):Boolean;stdcall;
現在已知道錯在那邊 把 function KTConfirm(Title:string):Boolean;stdcall; ^^^^^^ 改成function KTConfirm(Title:Pchar):Boolean;stdcall; 真是謝謝大家,此地是個好地方
lee
站長


發表:55
回覆:173
積分:45
註冊:2002-02-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-04-17 12:49:26 IP:61.219.xxx.xxx 未訂閱
引言:
現在已知道錯在那邊
把 function KTConfirm(Title:string):Boolean;stdcall;
                            ^^^^^^
改成function KTConfirm(Title:Pchar):Boolean;stdcall;
真是謝謝大家,此地是個好地方
原來如此,我想很多Windows的核心,包括:DLL與API都是用C的方式宣告定義的, 所以採用C的PChar就能與VB相通了,因String為Pascal專有的變數型態! ~~~Delphi K.Top網站總管~~~
------
~~~Delphi K.Top網站總管~~~
系統時間:2024-11-23 2:07:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!