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

如何以BCB開發DLL供Delphi主程式動態呼叫

答題得分者是:syntax
miguo
一般會員


發表:5
回覆:3
積分:1
註冊:2004-02-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-11-13 18:32:39 IP:60.248.xxx.xxx 訂閱
背景:
想與Delphi所開發的系統整合,對方提供原DLL檔的規格可讓我方自行開發DLL後進行置換供主程式動態呼叫,但對方Delphi主程式不願作任何修改,而我方現有資源皆C Builder 2007所開發故打算以C Builder開發此DLL。
現況:
經測試已證實原系統採用Delphi預設Call Convention(即__fastcall)定義Function,若C Builder DLL採用__stdcall將無法正確傳遞參數,若採用__fastcall又因BCB編譯器的Name Mangling造成Function無法呼叫(Function Name前面多了一個'@')。
請問:
1.是否可在C Builder的Project->Options中設定讓編譯器不要進行Name Mangling?
2.在VC 好像可加 #pragma comment(linker,"/exports:myFunc=@myFunc") 解決Name Mangling,C Builder是否有類似的方法?
3.在C Builder中是否有任何程式撰寫計巧可避開如上所述Call Convention或Name Mangling造成的問題?
syntax
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-11-16 09:04:35 IP:59.125.xxx.xxx 訂閱
如果規格掌握在對方,那也可以自己寫一個 Delphi  DLL 來呼叫,自己的程式 BCB 再呼叫此 DLL
不過就是會多一層 context switch

善用 Google,Key words : bcb Name Mangling
手動修改:
http://74.125.153.132/search?q=cache:ZSYo_ALEcvUJ:aftcast.blogspot.com/2006/08/using-dll-between-bcb-and-vc.html bcb Name Mangling&cd=4&hl=zh-TW&ct=clnk&gl=tw&client=firefox-a
用 extern "C" 的相關方式:
http://www.experts-exchange.com/Programming/Languages/CPP/Q_20682402.html


===================引 用 miguo 文 章===================
背景:
想與Delphi所開發的系統整合,對方提供原DLL檔的規格可讓我方自行開發DLL後進行置換供主程式動態呼叫,但對方Delphi主程式不願作任何修改,而我方現有資源皆C Builder 2007所開發故打算以C Builder開發此DLL。
現況:
經測試已證實原系統採用Delphi預設Call Convention(即__fastcall)定義Function,若C Builder DLL採用__stdcall將無法正確傳遞參數,若採用__fastcall又因BCB編譯器的Name Mangling造成Function無法呼叫(Function Name前面多了一個'@')。
請問:
1.是否可在C Builder的Project->Options中設定讓編譯器不要進行Name Mangling?
2.在VC 好像可加 #pragma comment(linker,"/exports:myFunc=@myFunc") 解決Name Mangling,C Builder是否有類似的方法?
3.在C Builder中是否有任何程式撰寫計巧可避開如上所述Call Convention或Name Mangling造成的問題?
miguo
一般會員


發表:5
回覆:3
積分:1
註冊:2004-02-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-11-16 14:50:12 IP:60.248.xxx.xxx 訂閱
感謝Syntax大建議多加一層context switch的設計技巧,由於規格掌握在對方,原本最壞的打算是以自己不熟悉的Delphi去開發整個DLL,現在只要透過簡單context switch的Delphi DLL再去呼叫完整功能的BCB DLL,大幅降低了心理上的負擔。
系統時間:2024-04-20 19:29:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!