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

Delphi 6 可以呼叫 vb.net 開發的DLL 嗎?

缺席
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-10 08:59:38 IP:59.120.xxx.xxx 訂閱
請問各位高手:
Delphi 6 可以呼叫 vb.net 開發的DLL嗎?要如何呼叫?
還是其他版本的Delphi 才能 呼叫?要如何呼叫?
謝謝
------
學藝不精 謝多多指教
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-10 14:33:01 IP:61.64.xxx.xxx 訂閱
DLL 的用意,就是不分語言
如何呼叫,請自己搜尋版上文章

===================引 用 esp_pzj 文 章===================
請問各位高手:
Delphi 6 可以呼叫 vb.net 開發的DLL嗎?要如何呼叫?
還是其他版本的Delphi才能 呼叫?要如何呼叫?
謝謝
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-12 16:42:39 IP:61.67.xxx.xxx 未訂閱
dll 是 windows 早期規劃的一個動態連結函式庫,所有在windows上要開發成dll的都要遵循這一制定的規則,所以原則上是可以引用的,但必須在Delphi中另外宣告如下類似(以下是Delphi5,  6版本沒有過不清楚如何宣告),經宣告後就可以在Delphi專案中引用

function Zero_Calibration(my_EQ_Type: Integer): Integer; cdecl; external 'nMOT_MEXA_DLL.dll' name 'prg_Zero_Calibration';

nMOT_MEXA_DLL.dll 是VB 寫出來的 DLL
name 'prg_Zero_Calibration' 是引用 VB中的FUNCTION NAME

在Delphi 專案中即可引用Zero_Calibration()
shunchia63
高階會員


發表:26
回覆:141
積分:198
註冊:2007-05-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-13 00:35:35 IP:61.62.xxx.xxx 訂閱
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-08-13 09:31:55 IP:59.120.xxx.xxx 訂閱
P.D.版主
使用您的方法出現下列訊息:
「無法找到程序輸入點prg_Zero_Calibration(在動態連結程式庫Project2.dll)」
請問這是什麼問題? 是vb開發的dll的問題嗎?
謝謝
------
學藝不精 謝多多指教
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-08-13 12:46:25 IP:61.67.xxx.xxx 未訂閱
我咧! 你怎麼會直接引用我的function name 'prg_Zero_Calibration 呢? 難道你的function name 正麼巧完全同名?
===================引 用 esp_pzj 文 章===================
P.D.版主
?????使用您的方法出現下列訊息:
??? 「無法找到程序輸入點prg_Zero_Calibration(在動態連結程式庫Project2.dll)」
???? 請問這是什麼問題? 是vb開發的dll的問題嗎?
???????????? ???????????????????????????????????????????????????? 謝謝
????
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-08-13 16:33:21 IP:59.120.xxx.xxx 訂閱
<textarea class="vb" rows="10" cols="60" name="code">Public Class CheckUser 'USNSystem.dll '產生單號 Dim ClassNo, ClassNum As Integer Public var1 As Integer Public Shared Function CheckUser(ByVal a As Int32) As Int32 Dim i As Int32 Dim x As Int32 For i = 1 To a x = x i Next Return x End Function Public Shared Function CheckUserd(ByVal a As Int32) As Int32 Dim i As Int32 Dim x As Int32 For i = 1 To a x = x i Next Return x End Function Function LoadDetail(ByVal no As Integer) Dim i As Int32 Return i End Function Sub Save() Data_Save() End Sub Private Sub Data_Save() End Sub End Class </textarea><br />
我直接吧 vb 貼上來
請問我如何引用 CheckUser
謝謝
------
學藝不精 謝多多指教
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-08-14 00:26:39 IP:61.67.xxx.xxx 未訂閱
function myDelphifunction(myVar: Integer): Integer; cdecl; external 'USNSystem.dll' name 'CheckUser';

紅色請自定一個Delphi function name
粉色 為 Delphi 接收 vb 中的你指定function 的變數,有多組的話要與 VB 對應

綠色 為 VB 的 DLL NAME, 請注意大小寫要完全一致
藍色 為 VB 實際引用的 FUNCTION NAME, 請注意要大小寫一致
紫色,有幾種用法不同,請自行查HELP,基本上引用這種模式大多可以通行
橙色,為在Delphi中要回傳的型態, 要與 vb 對應

抱歉,我沒學過 vb,所以看不懂 vb code 宣告,不過我有一個疑問,因為我看你的vb code , 其實function 內的設計是很單純,並不是使用到十分複雜或使用vb特有一些工具開發,與其這樣引用,既然要使用Delphi開發,何不利用Delphi自己寫同樣的function 功能直接使用就好了,何必要大費周章繞一圈來引用,因為一般會引用C或VB的DLL,都是要補足Delphi在自動控制支援不足或有些Delphi實際做不上來或前輩留下來十分複雜的function等等狀況才會去引用。
編輯記錄
P.D. 重新編輯於 2007-08-14 00:32:56, 註解 無‧
P.D. 重新編輯於 2007-08-14 00:33:53, 註解 無‧
shunchia63
高階會員


發表:26
回覆:141
積分:198
註冊:2007-05-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-08-14 11:51:51 IP:61.62.xxx.xxx 訂閱
如標題   主題:Delphi 6 可以呼叫 vb.net 開發的DLL 嗎?

vb.net 開發的DLL 應該為ClassLibrary 非Win32 DLL

答案應該不可以直接呼叫

需額外處理

參考上面Win32 <--> .NET

或用.NET寫一支COM 封裝 ClassLibrary 給Win32 AP使用



若 vb. 開發的DLL 嗎?
DLL 可能很多種如:ActiveX可能要使用 CreateOleObject
另一種如樓上所述

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-08-14 12:42:59 IP:61.67.xxx.xxx 未訂閱
感謝 shunchia63 兄的提示,因為我並未使用過 .net,不清楚 .net 所產生出來的 dll 是否符合 win32 架構,以上是就標準win32平台上的 dll 模式來討論,如果有論述不正確的地方,還請多多見諒!
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-08-15 08:50:43 IP:59.120.xxx.xxx 訂閱
感謝P.D 及 shunchia63 兄的建議:
目前還沒測試出來,我先請我的朋友 開發 win32 的 DLL。


P.D :
因為我的朋友是學 .NET 我想跟我朋友一起開發系統,所以先用 簡單的 vb code 的 DLL 來測試可只可行,再進一步的開發系統。
目前正在多方面測試中……


===================引 用 P.D. 文 章===================
function myDelphifunction(myVar: Integer): Integer; cdecl; external 'USNSystem.dll' name 'CheckUser';

紅色請自定一個Delphi function name
粉色 為 Delphi 接收 vb 中的你指定function 的變數,有多組的話要與 VB 對應

綠色 為 VB 的 DLL NAME, 請注意大小寫要完全一致
藍色 為 VB 實際引用的 FUNCTION NAME, 請注意要大小寫一致
紫色,有幾種用法不同,請自行查HELP,基本上引用這種模式大多可以通行
橙色,為在Delphi中要回傳的型態, 要與 vb 對應

抱歉,我沒學過 vb,所以看不懂 vb code 宣告,不過我有一個疑問,因為我看你的vb code , 其實function 內的設計是很單純,並不是使用到十分複雜或使用vb特有一些工具開發,與其這樣引用,既然要使用Delphi開發,何不利用Delphi自己寫同樣的function 功能直接使用就好了,何必要大費周章繞一圈來引用,因為一般會引用C或VB的DLL,都是要補足Delphi在自動控制支援不足或有些Delphi實際做不上來或前輩留下來十分複雜的function等等狀況才會去引用。
------
學藝不精 謝多多指教
Icekid
一般會員


發表:0
回覆:1
積分:0
註冊:2008-06-25

發送簡訊給我
#12 引用回覆 回覆 發表時間:2008-06-26 00:20:15 IP:119.14.xxx.xxx 訂閱
題目改一下 : 請問BCB也可以呼叫vb.net 開發的DLL 嗎?
是否可以請高手大大說一下步驟 , 英文太差看不太懂....><

===================引 用 shunchia63 文 章===================
如標題 主題:Delphi 6 可以呼叫 vb.net 開發的DLL 嗎?

vb.net 開發的DLL 應該為ClassLibrary 非Win32 DLL

答案應該不可以直接呼叫

需額外處理

參考上面Win32 <--> .NET

或用.NET寫一支COM 封裝 ClassLibrary 給Win32 AP使用



若 vb. 開發的DLL 嗎?
DLL 可能很多種如:ActiveX可能要使用 CreateOleObject
另一種如樓上所述

------
嫩是新手的名
HikaruGo
中階會員


發表:22
回覆:69
積分:88
註冊:2007-12-09

發送簡訊給我
#13 引用回覆 回覆 發表時間:2008-06-27 13:19:28 IP:61.62.xxx.xxx 訂閱
   建議你 用.NET寫一支COM 封裝 ClassLibrary
給Win32 AP使用就不管BCB delphi了

系統時間:2024-04-25 5:58:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!