線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1350
推到 Plurk!
推到 Facebook!

想在 .Dll 檔的某函數中來呼叫使用

答題得分者是:RaynorPao
yunghant
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-22 17:18:11 IP:163.31.xxx.xxx 未訂閱
請問各位, 在執行中的主程式讀進一個 .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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-22 21:04:22 IP:61.221.xxx.xxx 未訂閱
引言: 請問各位, 在執行中的主程式讀進一個 .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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-26 13:57:09 IP:218.187.xxx.xxx 未訂閱
yunghant 你好: 容我重複敘述你的問題(以免有所誤解) 假設你的主程式叫做 > .. 是的, 寫快了點, 就是這樣的 :-) 我想反問你一個問題~~為什麼不把 > 還是有什麼很特殊的需求呢??< > --
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-26 14:17:39 IP:203.73.xxx.xxx 未訂閱
引言: 哦, 因為主程式是一個, 而 .Dll 有很多個, 每一個 .Dll 可能做出的工作結果 會給另一個 .Dll 的取用, 而主程式也會用到各 .Dll 所產生的資料再加以使用 及給各 .Dll 呼叫時取用, 所以不能放在設在各個 .Dll 裡 :-)
yunghant 你好: function 除了傳回值以外,不是也能夠利用參數 call by reference 的方式,取得被 call function 處理過的資料嗎?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
yunghant
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-26 15:39:32 IP:218.173.xxx.xxx 未訂閱
引言:
引言: 哦, 因為主程式是一個, 而 .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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-26 18:04:34 IP:210.66.xxx.xxx 未訂閱
各位好, 這個問題我最近也想了很久 其中一個需求是因為我想讓各個Dll透過主程式 的TestA(..)來存取共用變數, 後來我用dllexport試圖由 主程式把 TestA() 的指標傳給Dll使用, 可是會Access violation, 可能這樣算違規存取mem吧...
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-26 18:15:11 IP:61.221.xxx.xxx 未訂閱
引言: 這個問題我最近也想了很久 其中一個需求是因為我想讓各個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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-26 20:31:28 IP:210.66.xxx.xxx 未訂閱
引言: metal 你好: 請問你有先用 View depends 這個工具去檢視你的 exe 中 你所指定的 function 真的有被 export 出來嗎?? -- >< face="Verdana, Arial, Helvetica"> RaynorPao 你好: sorry, 我不知道"View depends"這個tool耶~ 不過我想是有 >
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-26 21:38:36 IP:61.221.xxx.xxx 未訂閱
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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-28 12:42:41 IP:218.187.xxx.xxx 未訂閱
謝謝, 我會好好研究。
系統時間:2024-04-29 19:03:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!