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

BCB6使用Delphi編譯的dll產生錯誤?

尚未結案
Lily
一般會員


發表:4
回覆:6
積分:2
註冊:2002-08-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-31 17:33:18 IP:211.21.xxx.xxx 未訂閱
請教各位前輩一個笨問題。 BCB6要如何才能正確呼叫Delphi7所使用的dll呢    用Delphi寫了一個測試用dll,然後讓BCB去呼叫執行, 結果發生Access Violation的訊息,請問、我是哪裡做錯了呢?    拜託大家        BCB ddl Source Code如下: ================================ void __fastcall TForm1::Button1Click(TObject *Sender) { bool(__stdcall *bAP_SCUpLoad)(TStringList *AStrList); HINSTANCE dll = LoadLibrary("TFMUPL.dll"); (FARPROC &)bAP_SCUpLoad = GetProcAddress(dll,"bAP_SCUpLoad"); if (bAP_SCUpLoad == NULL) { ShowMessage("找不到位址"); FreeLibrary(dll); } TStringList *TempList = new TStringList; // declare the list try{ TempList->Add("Test1"); TempList->Add("Test2"); TempList->Add("Test3"); bool bExist = bAP_SCUpLoad(TempList); if (bExist == True) { ShowMessage("傳入資料"); } else { ShowMessage("ERROR"); } } __finally{ delete TempList; // destroy the list object } FreeLibrary(dll); } ================================ Delphi ddl Source Code如下: //------------------ // TFMUPL內容 //------------------ ============================= library TFMUPL; uses SysUtils, Classes, UITest1 in 'UITest1.pas'; exports bAP_SCUpLoad; begin end. ============================= //------------------ // UITest1內容 //------------------ ============================= unit UITest1; interface uses SysUtils,Classes; function bAP_SCUpLoad(uList:TStringList):Boolean; implementation function bAP_SCUpLoad(uList:TStringList):Boolean; begin Result := (uList.Count > 0); end; end. ============================= 發表人 - Lily 於 2004/03/31 21:24:36
Lily
一般會員


發表:4
回覆:6
積分:2
註冊:2002-08-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-01 11:13:41 IP:211.21.xxx.xxx 未訂閱
結論是我太呆了, 經高人指點,是因為一開始就宣告錯了。 應該要宣告成 stdcall;    function bAP_SCUpLoad(uList:TStringList):Boolean;stdcall; 這樣就可以了。
系統時間:2024-06-29 9:48:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!