CodeGuard警告:Resource from different RTL in process |
缺席
|
swszg
一般會員 發表:11 回覆:10 積分:9 註冊:2007-01-27 發送簡訊給我 |
我的想法是利用一個exe內的一個執行緒
當作主執行緒 來管理其他dll裡的資源 開啟CodeGuard 發現CodeGuard給我這樣的警告:Resource from different RTL in process 我試過dll共用記憶體 不過好像也不是這樣的問題 還是我弄錯方式... 也看過網路上幾篇文章 不過好像沒辦法很懂 http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=delphi-gems.support.virtualtreeview.vcl&messageid=eerphm$9lg$1@news.soft-gems.net https://ww6.borland.com/message.jspa?messageID=27423 在網路上 關於這問題好像不是很多 不知道各位前輩們 是否給我點意見 In Project1.dll 把指標指向共用的記憶體 [code cpp] void DLL_EXPORT Initial(TThreadList *ScheduledTask) { ThreadList_SystemScheduledTask = ScheduledTask; } [/code] new 一個char* 給ThreadList [code cpp] void DLL_EXPORT newResource(void) { //宣告所使用的記憶體 char *TempBuff_COMM; //排程任務暫存器 TempBuff_COMM = new(char[6]); //排程任務暫存器 <--在這裡new的 TempBuff_COMM[5] = 0x00; TempBuff_COMM[0] = 0x01; TempBuff_COMM[4] = 0xFF; TempBuff_COMM[3] = 0x01; TempBuff_COMM[2] = 0x01; TempBuff_COMM[1] = 0x01; ThreadList_SystemScheduledTask->Add(TempBuff_COMM); //<-這裡add 給ThreadList } [/code] In Project2.exe 刪除 ThreadList任務 [code cpp] pTempBuff_CommandList = ThreadList_SystemScheduledTask->LockList(); try { strcpy ( TempBuff_CurrentCommand, (char *)pTempBuff_CommandList->Items[0] ); //02.02. 判斷是否為自己的程序 - true:清除此項命令 //if( TempBuff_CurrentCommand[0] == 0x01) //{ char *toDelete = (char *)pTempBuff_CommandList->Items[0]; pTempBuff_CommandList->Remove (pTempBuff_CommandList->Items[0]); delete[] toDelete; //<- 在這裡會出現Resource from different RTL in process 的警告 TempBuff_CommandCode = *((unsigned int*)(TempBuff_CurrentCommand 1)); } __finally { //03. 任務排程列表 - 解鎖 ThreadList_SystemScheduledTask->UnlockList(); } [/code] 專案
------
ΞΛΤ造福全人類ΠΔζ |
swszg
一般會員 發表:11 回覆:10 積分:9 註冊:2007-01-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |