如何用 EXE 傳字串給 DLL |
缺席
|
seeing
初階會員 發表:49 回覆:131 積分:41 註冊:2002-11-07 發送簡訊給我 |
請教各位先進,小弟想利用EXE檔傳送字串給DLL,目前的做法如下:
in DLL [code cpp] void __stdcall Test(char *str) { Form1->RichEdit1->Lines->Add((char*)str); } [/code] in EXE [code cpp] AnsiString str="test"; for(int i=0;i<10;i ) { Test(str.c_str()); } [/code] 目前遇到如果只單次執行 Test(); 是沒有問題的,但如果放在 for 迴圈內連續執行,就會發生錯誤;有找過一些文章,似乎可以用 Memory map 的方式解決,但要如何做就不是很清楚了,不知道可以提供點意見嗎?謝謝 編輯記錄
seeing 重新編輯於 2008-11-23 21:41:11, 註解 無‧
|
frontier
初階會員 發表:0 回覆:27 積分:30 註冊:2008-11-20 發送簡訊給我 |
站上 Memory map 似乎可以查得到
===================引 用 seeing 文 章=================== 請教各位先進,小弟想利用EXE檔傳送字串給DLL,目前的做法如下: in DLL [code cpp] void __stdcall Test(char *str) { Form1->RichEdit1->Lines->Add((char*)str); } [/code] in EXE [code cpp] AnsiString str="test"; for(int i=0;i<10;i ) { Test(str.c_str()); } [/code] 目前遇到如果只單次執行 Test(); 是沒有問題的,但如果放在 for 迴圈內連續執行,就會發生錯誤;有找過一些文章,似乎可以用 Memory map 的方式解決,但要如何做就不是很清楚了,不知道可以提供點意見嗎?謝謝 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
seeing
初階會員 發表:49 回覆:131 積分:41 註冊:2002-11-07 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
從程式碼上來看,似乎不會有問題。再者,你是一個dll給一個exe用,並不需要share memory,當然也不需要memory map。
我覺得問題也許是出在 char * 指標參數傳遞問題。 可改成 ansistring 型別嗎? 此外,我非常好奇你說loop後會出錯,是出什麼錯?? 可以描述或是貼圖更好! 謝謝
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2008-11-25 09:29:08, 註解 無‧
|
seeing
初階會員 發表:49 回覆:131 積分:41 註冊:2002-11-07 發送簡訊給我 |
aftcast 您好:
跑 Loop 的會出現以下錯誤 Project Project1.exe raised execption class EOutofResources with messagg 'RichEdit line insertion error'. Process stopped. Use Step or Run to continue. 一開始我也是用 AnsiString 的,也是發生一樣的錯誤,後來找了些文章看,似乎用 char * 會比較好,所以才改成 char *,但還是出現一樣的錯誤… 謝謝您 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
幫你找了一下google的資料,發現這下列的資訊很有用,請參照一下
http://209.85.173.132/search?q=cache:ayRt1LviGGQJ:www.delphibbs.com/delphibbs/dispq.asp?lid=2111942 EOutofResources dll&hl=zh-TW&ct=clnk&cd=10&gl=tw&client=firefox-a
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
seeing
初階會員 發表:49 回覆:131 積分:41 註冊:2002-11-07 發送簡訊給我 |
aftcast 您好:
可能 RichEdit 是個問題,但不知道怎麼解決… 我有試過在 DLL 的 Test() 中,完全不做任何事,像底下這樣,一樣跑 loop 時會發生錯誤 [code cpp] void __stdcall Test(char *str) { // } [/code] Project1.exe faulted with mesage: 'access violation at 0x00000000: read of address 0x00000000'. |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
seeing
初階會員 發表:49 回覆:131 積分:41 註冊:2002-11-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |