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

FreeLibrary的疑問

答題得分者是:ikk
dadai
一般會員


發表:29
回覆:31
積分:12
註冊:2009-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-20 07:55:21 IP:219.90.xxx.xxx 訂閱
請教各位前輩們

我用BCB做了一個DLL
DLL中包含了一個class和一個lib,會再連結到其他的dll
DLL提供的一個function是new物件

當我程式呼叫該dll的時候
如果沒有呼叫該lib提供的function
FreeLibrary是可以正常結束的
但是如果呼叫了該lib提供的function
FreeLibrary的時候會跳出CPU的頁面籤
但是直接執行exe檔看起來卻又很正常

請教這樣的行為是否正常
如果不正常的話
我該怎麼解決這個問題嗎

我的Seudo-code大致如下

[code cpp]
typedef void* (*pvFunctv)();
pvFunctv CreateFoo;
HINSTANCE hdll = LoadLibrary("MyDLL.dll");
if(!hdll)
return;
CreateFoo = (pvFunctv)(GetProcAddress( hdll, "_CreateMyObject" ));

TMySuperClass *tmp=static_cast< TMySuperClass* > ( CreateFoo() );
tmp->MyFunction1();
tmp->LibFunction1();
tmp->MyFunction2();
tmp->LibFunction2();
delete tmp;

FreeLibrary( hdll );

[/code]
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-20 10:15:38 IP:163.28.xxx.xxx 訂閱
是不是function裡面有對create 出來的object做動作?
------
FPGA驗證, FPGA開發平台, http://smims.com
dadai
一般會員


發表:29
回覆:31
積分:12
註冊:2009-01-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-20 11:51:43 IP:219.90.xxx.xxx 訂閱
ikk你好
如你所說的一般
當function有對create出來的object做動作時
FreeLibrary的時候就會出現問題

請問我該怎麼解決這個問題嗎

===================引 用 ikk 文 章===================
是不是function裡面有對create 出來的object做動作?
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-20 12:00:27 IP:163.28.xxx.xxx 訂閱
是不是裡面有對記憶體做新增刪除動作?
------
FPGA驗證, FPGA開發平台, http://smims.com
dadai
一般會員


發表:29
回覆:31
積分:12
註冊:2009-01-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-22 08:33:13 IP:219.90.xxx.xxx 訂閱
我想我找到問題點了

ikk謝謝你的大力幫忙

===================引 用 ikk 文 章===================
是不是裡面有對記憶體做新增刪除動作?
系統時間:2017-12-15 23:59:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!