如何以BCB開發DLL供Delphi主程式動態呼叫 |
答題得分者是:syntax
|
miguo
一般會員 發表:5 回覆:3 積分:1 註冊:2004-02-05 發送簡訊給我 |
背景:
想與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 發送簡訊給我 |
如果規格掌握在對方,那也可以自己寫一個 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |