VB 可呼叫用DELPHI 作出的dll嗎? |
|
cbrskimo
一般會員 發表:9 回覆:14 積分:4 註冊:2002-03-13 發送簡訊給我 |
|
lee
站長 發表:55 回覆:173 積分:45 註冊:2002-02-27 發送簡訊給我 |
|
cbrskimo
一般會員 發表:9 回覆:14 積分:4 註冊:2002-03-13 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
cbrskimo
一般會員 發表:9 回覆:14 積分:4 註冊:2002-03-13 發送簡訊給我 |
|
lee
站長 發表:55 回覆:173 積分:45 註冊:2002-02-27 發送簡訊給我 |
|
weijh
一般會員 發表:0 回覆:3 積分:0 註冊:2002-04-06 發送簡訊給我 |
以從此站下載的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 發送簡訊給我 |
引言: 以從此站下載的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 發送簡訊給我 |
引言:原來如此,我想很多Windows的核心,包括:DLL與API都是用C的方式宣告定義的, 所以採用C的PChar就能與VB相通了,因String為Pascal專有的變數型態! ~~~Delphi K.Top網站總管~~~現在已知道錯在那邊 把 function KTConfirm(Title:string):Boolean;stdcall; ^^^^^^ 改成function KTConfirm(Title:Pchar):Boolean;stdcall;真是謝謝大家,此地是個好地方
------
~~~Delphi K.Top網站總管~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |