[問題] DLL共用記憶體和DLL內宣告全域變數含意有一樣嗎?
爬了好多文對於dll內的全域變數還是不太瞭解所以想想請教各位大大
一般討論的DLL共用記憶體好像大部分都是針對行程間或不同程式間的共享記憶體
通常都是用下列用法
#pragma data_seg ("my_share_area")
int count = 0;
#pragma data_seg()
#pragma comment(linker, "/SECTION:my_share_area,RWS")
這跟所謂在dll內宣告一個全域變數差別在哪@@?
我在msdn上查到下面寫法還有一些網路資料
http://www.mydianping.com/bbsinfo240006-53612.html
但我依照如此作法一直失敗所以想請教大家
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;
=======我的dll程式=========
double m,n;
__declspec(dllexport) double __stdcall Count()
{
double sum = 0;
for (m ; m <= n ; m++)
sum += m;
return sum;
}
======引用dll的程式=========
typedef double(__stdcall* ptr)();
__declspec(dllimport) double m;
__declspec(dllimport) double n;
ptr cnt;
HINSTANCE dll;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
dll = LoadLibrary("test.dll");
cnt = (ptr)GetProcAddress(dll,"Count");
if(dll!=NULL)
ShowMessage("DLL Load Finish");
Edit1->Text = cnt();
Edit1->Text = m; //==>是否有辦法直接引用dll內的m,n?
}
對於dll內m跟n是全域變數,但在我引用dll的主程式內m跟n算是全域變數還是區域變數?
要如何作才能在Button1Click內正確引用m跟n?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.210.112.66
推
11/23 17:07, , 1F
11/23 17:07, 1F
→
11/23 17:07, , 2F
11/23 17:07, 2F
→
11/23 17:08, , 3F
11/23 17:08, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章