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

BCB DLL問題

尚未結案
marsic
一般會員


發表:1
回覆:0
積分:0
註冊:2004-01-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-29 20:41:50 IP:211.22.xxx.xxx 未訂閱
void __fastcall TForm1::FormCreate(TObject *Sender) { Memo1->Clear(); int (*VendorCommandBulkRead)(UCHAR, USHORT, USHORT, USHORT, PUCHAR); hInst=LoadLibrary("USB_CAM.dll"); (FARPROC &)VendorCommandBulkRead=GetProcAddress(hInst, "VendorCommandBulkRead"); } int __fastcall TForm1::CheckVQBusyFlg(void) { UCHAR Request = COM_VQ; USHORT Index = 0x0000; USHORT Value = 0; USHORT Length = 1; int Return_Status=ERROR_SUCCESS; UCHAR Flag = TRUE; //Default is busy USHORT i = 0; int (*VendorCommandBulkRead)(UCHAR, USHORT, USHORT, USHORT, PUCHAR); while(1) { Return_Status = VendorCommandBulkRead(Request, Index, Value, Length, &Flag); .................... } return Return_Status; } 往往到了Return_Status那邊就會有一個錯誤 Project2 Project2.exe raised exception class EAccess Violation with message 'Access violation at address 001200A0. Read of address 001200A0'. Process stopped. Use Step or Run to continue. 可以請問大家 這是啥問題ㄋ 謝謝
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-29 20:50:54 IP:61.221.xxx.xxx 未訂閱
引言: void __fastcall TForm1::FormCreate(TObject *Sender) { Memo1->Clear(); int (*VendorCommandBulkRead)(UCHAR, USHORT, USHORT, USHORT, PUCHAR); hInst=LoadLibrary("USB_CAM.dll"); (FARPROC &)VendorCommandBulkRead=GetProcAddress(hInst, "VendorCommandBulkRead"); } int __fastcall TForm1::CheckVQBusyFlg(void) { UCHAR Request = COM_VQ; USHORT Index = 0x0000; USHORT Value = 0; USHORT Length = 1; int Return_Status=ERROR_SUCCESS; UCHAR Flag = TRUE; //Default is busy USHORT i = 0; int (*VendorCommandBulkRead)(UCHAR, USHORT, USHORT, USHORT, PUCHAR); while(1) { Return_Status = VendorCommandBulkRead(Request, Index, Value, Length, &Flag); .................... } return Return_Status; } 往往到了Return_Status那邊就會有一個錯誤 Project2 Project2.exe raised exception class EAccess Violation with message 'Access violation at address 001200A0. Read of address 001200A0'. Process stopped. Use Step or Run to continue. 可以請問大家 這是啥問題ㄋ 謝謝
marsic 你好:
請先確認以下幾件事情
(>    < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
LeonSun
一般會員


發表:5
回覆:9
積分:2
註冊:2003-10-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-03 22:54:22 IP:61.229.xxx.xxx 未訂閱
marsic 你好: 我以我之前碰到的情形來解釋,不知是否為您的問題所在,就是在使用BCB呼叫DLL時若DLL的函式其所要用的參數為一個或沒有則會正常,若參數有很多個如您程式中所示,需要在DLL跟主程式中皆加入__stdcall如int __stdcall(*VendorCommandBulkRead)(UCHAR, USHORT, USHORT, USHORT, PUCHAR); 則使用上就不會有問題,這是跟DLL在Return時使用CPU stack有關。 希望對您有幫助!
Fm
初階會員


發表:19
回覆:66
積分:37
註冊:2003-10-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-21 00:23:26 IP:61.62.xxx.xxx 未訂閱
另外提供一點檢查... exe與dll要放在一起 不然要設訂對的路徑... //--------- 偏聽則誨,兼聽則明 如果那個人是我..那該多好
系統時間:2024-05-06 17:28:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!