線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1901
推到 Plurk!
推到 Facebook!

第一次用Delphi寫成DLL無法給其他開發語言用

尚未結案
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-31 14:23:32 IP:61.30.xxx.xxx 未訂閱
新手小弟 第一次寫DLL扒了站上一些文章後及各位先進指導, 終於在Delphi環境上引用呼叫,一切功能都正常(無出現任何錯誤訊息) 但是給其他開發語言工具上呼叫(如:LabView、VC、BCB...) 發生以下不等情形: 1.用LabView呼叫後,會尋找 Borlndmm.dll。 放在 該與程式同一目錄下,並不會引用,需放至系統(WinNT\System32)下 已解決,想問放在同一目錄下,為何不行呢? 2.將第1點問題解決後,執行呼叫時,程式會自動關閉? 3.在LabView引用、設定參數時,要選擇何種資料型態,才不會出現 『DLL 使用的記憶體位址與LabView使用的記憶體位址 有相衝突的訊息』? 嘗試寫DLL(ADO WaitForm)有些觀念上在建立中,請各位先進多多指教。 已將檔案放至會員求助區內,主題一樣。謝謝各位。
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-31 14:56:08 IP:60.248.xxx.xxx 未訂閱
找一下 ShareMemRep 吧 這樣就不用帶那個討人厭的 borlndmm.dll 不過.. LabView 我沒用過... 幫不你了... 另外,就是看了一下你的 DLL 我看你沒有傳什麼東西給 DLL 裡的 Procedure 所以,應該是不需要去用 ShareMem 的
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-31 17:55:52 IP:61.30.xxx.xxx 未訂閱
LabView 適用C開發出來,每一個Function幾乎都採用『執行緒』。 是一種圖形式程式語言(只要有邏輯概念,然後畫畫圖,程式就寫完了) http://www.ni.com/ 還有呀 Delphi 的 Boolean 傳回值 好像不是 -1 & 0 ?
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-01 00:41:06 IP:61.64.xxx.xxx 未訂閱
引言:DLL 使用的記憶體位址與LabView使用的記憶體位址 有相衝突的訊息
一般用上 ShareMem 的目的,就是為了讓 DLL 與主程式用同一塊位址空間 所以從上面的訊息來判斷,我推測是 ShareMem 引起的 你要不要把 ShareMem 拿掉試試看?
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-01 09:49:22 IP:61.30.xxx.xxx 未訂閱
剛剛 額外寫一個秀訊息的DLL 1.使用 PCHAR 傳入參數 用LabView 呼叫後一切正常,但是關閉程式後,會發生『系統己經建立錯誤日誌』訊息。 2.再把 Coinitialize 拿掉,還是會出現上述訊息。 3.再把 ShareMem 拿掉,關閉程式後,無上述問題。 謝謝 reptile 大大 附註:LabView 有此 Pascal String Pointer & C String Pointer 不知是否與Delphi 的String 有何關係,正在 Try... 如果可以正常動作 在結案喔~ 加油~ 有 KTOP 真好 ^^~
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-01 11:12:31 IP:61.30.xxx.xxx 未訂閱
拿掉 ShareMem & (String -> PChar 、 Result: Boolean-> Integer) 會出現 An execption occurred within the external code called by a Call library Note. This may have corrupted LabVIEW's memory. You should save any work to a new location and restart LabVIEW. VI "Untitled.vi" was stopped at Call Library Function Note 0x290 of subVI "Untitled.vi" 附註:LabView Call DLL Method Calling Conventions : stdcall(WINAPI) input parameter: Type - String StringFormat - C String Pointer return parameter: Type - Numberic Data Type - Signed 32-bit Integer 吼~ 頭好痛...思考中...
系統時間:2024-05-02 20:43:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!