A.dll 的迴圈內呼叫 B.dll 問題 |
缺席
|
ac12zz
一般會員 發表:2 回覆:2 積分:0 註冊:2006-07-12 發送簡訊給我 |
各位前輩好
小弟練習DLL實作,主頁面下放置了一個Button 按下去後會呼叫 sumloop.dll 在sumloop.dll中有個迴圈,會呼叫double.dll 而double.dll只是很簡單的把傳入值乘以2後便回傳 但小弟不解的是,為何sumloop迴圈一次兩次可以,但執行到多次後,便出現了Access violation錯誤如下 ( PS. 已經在迴圈中加入暫停時間讓 loadlibrary 與 freelibrary 有緩衝時間 ) 以下是我的 sumloop.dll 程式碼 [Code] int __stdcall sumloop( int loopcount ,TLabel *lbC, int *transVar) { if( lbC->Visible == true ) return -1; int sum = 0; int i = 1; //加總 for ( i=1 ; i<=loopcount ; i ) { sum = i; } try { //在迴圈中呼叫double.dll for( i=0 ; i<10 ; i ) { HINSTANCE dll2temp = LoadLibrary( "doubleDll.dll" ); int (*dll2)( int); ( FARPROC& )dll2 = GetProcAddress( dll2temp, "doubleDll" ); sum = dll2( sum ); Sleep( 50 ); FreeLibrary( dll2temp ); Sleep( 300 ); } //奇怪的是,只單獨執行一次就不會發生access violation的情況發生 } catch(...) { Application->MessageBoxA( "Dll2 failed", "Warning", MB_OK ); } return sum ; } [/Code] 以下是我的doubleDll.dll 程式碼 [Code] int __stdcall doubleDll( int sum1 ) { sum1 *= 2; return sum1; } [/Code] 還請各位前輩能給予指點,感恩 |
coldwind1234
一般會員 發表:3 回覆:25 積分:20 註冊:2006-08-01 發送簡訊給我 |
|
ac12zz
一般會員 發表:2 回覆:2 積分:0 註冊:2006-07-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |