想在 .Dll 檔的某函數中來呼叫使用 |
答題得分者是:RaynorPao
|
yunghant
一般會員 發表:7 回覆:9 積分:3 註冊:2002-10-05 發送簡訊給我 |
請問各位, 在執行中的主程式讀進一個 .Dll 的檔後, 一般都是可以傳資料給 .Dll 的函數,
或是讀取該函數回傳的資料。如果想在 .Dll 檔的某函數中來呼叫該主程式中的某函數來運用
不知應該如何做, 謝謝各位的賜教。 Test.Cpp
------------
void __fastcall TForm11::FormActivate(TObject *Sender)
{
HINSTANCE dllInstance = LoadLibrary("Test.Dll");
GetProcAddress(dllInstance,"_Test");
Test(Application->Handle);
FreeLibrary(dllInstance);
} int __fastcall TForm11::TestNumber( int i )
{
......
......
return( i * 100 );
}
------------ ******************
Test.Dll
------------
void DLL_EXP TestNumber( HWND hWnd )
{
......
int i = TestNumber( 100 );
......
}
------------
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問各位, 在執行中的主程式讀進一個 .Dll 的檔後, 一般都是可以傳資料給 .Dll 的函數, 或是讀取該函數回傳的資料。如果想在 .Dll 檔的某函數中來呼叫該主程式中的某函數來運用 不知應該如何做, 謝謝各位的賜教。 Test.Cpp ------------ void __fastcall TForm11::FormActivate(TObject *Sender) { HINSTANCE dllInstance = LoadLibrary("Test.Dll"); GetProcAddress(dllInstance,"_Test"); Test(Application->Handle); FreeLibrary(dllInstance); } int __fastcall TForm11::TestNumber( int i ) { ...... ...... return( i * 100 ); } ------------ ****************** Test.Dll ------------ void DLL_EXP TestNumber( HWND hWnd ) { ...... int i = TestNumber( 100 ); ...... } ------------yunghant 你好: 容我重複敘述你的問題(以免有所誤解) 假設你的主程式叫做 > 我想反問你一個問題~~為什麼不把 > 還是有什麼很特殊的需求呢??< > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yunghant
一般會員 發表:7 回覆:9 積分:3 註冊:2002-10-05 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 哦, 因為主程式是一個, 而 .Dll 有很多個, 每一個 .Dll 可能做出的工作結果 會給另一個 .Dll 的取用, 而主程式也會用到各 .Dll 所產生的資料再加以使用 及給各 .Dll 呼叫時取用, 所以不能放在設在各個 .Dll 裡 :-)yunghant 你好: function 除了傳回值以外,不是也能夠利用參數 call by reference 的方式,取得被 call function 處理過的資料嗎?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yunghant
一般會員 發表:7 回覆:9 積分:3 註冊:2002-10-05 發送簡訊給我 |
引言:引言: 哦, 因為主程式是一個, 而 .Dll 有很多個, 每一個 .Dll 可能做出的工作結果 會給另一個 .Dll 的取用, 而主程式也會用到各 .Dll 所產生的資料再加以使用 及給各 .Dll 呼叫時取用, 所以不能放在設在各個 .Dll 裡 :-)yunghant 你好: function 除了傳回值以外,不是也能夠利用參數 call by reference 的方式,取得被 call function 處理過的資料嗎?? -- >>< face="Verdana, Arial, Helvetica"> 我目前碰到的這個問題是這樣的一個 function(..) ... 如. Project1.exe 主程式中有 void TestA(...) {...} ----------------- DLL裡面有一個.. void TestB( void ) { TestA(..); // 呼叫 Project1.exe 的 TestA() }; 若我在 DLL 程式裡先設一個 void TestA(..); 的話, 執行 TestB() 時會使用 DLL 的這個 TestA(); 若 DLL 程式不先設立 void TestA(..); 的話, 我的這個 DLL 沒法 Link 成功。:-) |
metal
一般會員 發表:1 回覆:5 積分:1 註冊:2002-12-03 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 這個問題我最近也想了很久 其中一個需求是因為我想讓各個Dll透過主程式 的TestA(..)來存取共用變數, 後來我用dllexport試圖由 主程式把 TestA() 的指標傳給Dll使用, 可是會Access violation, 可能這樣算違規存取mem吧... >>< face="Verdana, Arial, Helvetica"> metal 你好: 請問你有先用 View depends 這個工具去檢視你的 exe 中 你所指定的 function 真的有被 export 出來嗎?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
metal
一般會員 發表:1 回覆:5 積分:1 註冊:2002-12-03 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
yunghant & metal 你們好: (1)Depends 是 Visual Studio 的一個工具,如果有裝 Visual Studio 的話 會在「開始/程式集/Microsoft Visual Studio 6.0/Microsoft Visual Studio 6.0 Tools/Depends」找到 (2)另外~~我寫了一段 sample 給你們參考 (> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yunghant
一般會員 發表:7 回覆:9 積分:3 註冊:2002-10-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |