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

關於如何在DLL及LIB中使用全域變數

尚未結案
joshhot
一般會員


發表:2
回覆:3
積分:1
註冊:2003-01-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-09 21:07:57 IP:163.28.xxx.xxx 未訂閱
小弟有在書中及論壇裡學到了如何製作DLL及LIB檔案, 以及如何去使用它, 可是大部分的介紹都是以呼叫裡面的函數為主, 所有的變數都是在函式裡宣告的, 那不是一跳出函數,變數的值就消失了嗎! 如果想要在DLL裡面宣告個全域變數,當主程式呼叫 到DLL或LIB的函式時,才會去變動到他的值, 並記錄下它的值,直到下次呼叫時才改變, 不知道能不能這麼做? 還有在DLL或LIB裡面可以寫 class 嗎? 請哪位前輩幫我解除疑惑,謝謝!
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-10 12:45:53 IP:61.231.xxx.xxx 未訂閱
可以呀,只要您將 class 內的 method 都 export 出來即可,例如:
// 在 .h 或 .hpp 中宣告 class A
class A
{
private:
  int   FValue;    public:
  __fastcall A(int Value);
  int __fastcall GetA(void);
};    // 在 .cpp 中撰寫 class A 內的 method 並 export 出去
__declspec(dllexport) __fastcall A::A(int Value)
{
  FValue=Value;
}    __declspec(dllexport) int __fastcall A::GetA(void)
{
  return FValue;
}
沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/06/10 12:46:38
------
http://www.ViewMove.com
joshhot
一般會員


發表:2
回覆:3
積分:1
註冊:2003-01-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-10 19:47:27 IP:163.28.xxx.xxx 未訂閱
謝謝 dlee 的回應 不過,我照你的方法寫了個程式測試,程式如下︰    //  A.h // #ifndef A_H #define A_H    class A {   private:     int FValue;      public:     __fastcall A(int Value);     int __fastcall GetA(void); }; #endif    //  test.c // //--------------------------------------------------------- #include  #include "A.h" int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------- __declspec(dllexport) A::A(int Value) { FValue=Value; } //--------------------------------------------------------- __declspec(dllexport) int __fastcall A::GetA(void) { return FValue; } //--------------------------------------------------------- 可是程式在編譯的時候就出現錯誤了 錯誤訊息︰ [C Error] A.h(4): E2141 Declaration syntax error (點兩下後停在 class A 這一行) [C Error] test.c(9): E2141 Declaration syntax error (點兩下後停在 __declspec(dllexport) A::A(int Value) 這一行) 不知道是我哪裡搞錯了還是怎樣就無法編譯,煩請再解答一下 謝謝! 發表人 - joshhot 於 2003/06/10 19:49:00 發表人 - joshhot 於 2003/06/10 19:50:03
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-12 07:41:29 IP:61.224.xxx.xxx 未訂閱
請參考最新發表的 ■【BCB】【發表】示範 DLL 中 export 一個 Class   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32223    有完整的 project 檔及 source    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
joshhot
一般會員


發表:2
回覆:3
積分:1
註冊:2003-01-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-12 09:44:20 IP:140.127.xxx.xxx 未訂閱
我已經瞭解了! 謝謝你詳盡的解答,感激不盡!
系統時間:2024-06-29 22:53:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!