DLL和EXE怎樣共享全域性變數?

2021-06-09 04:31:10 字數 1281 閱讀 5411

全域性共享資料       

#pragma   data_seg   ("shareddata")    

hwnd   sharedwnd=null;//共享資料    

#pragma   data_seg()         

編譯選項加入   /section:shareddata,rws  

*************************===

用pragma設定共享資料:   

#pragma   data_seg("mysec")  

char   myshareddata[4096]=;  

#pragma   data_seg()   

然後在使用者的def檔案中為有名的資料區設定共享屬性。  

library   test  

data   read   write  

sections  

.mysec   read   write   shared  

在應用程式(程序)按外部變數引用共享資料。  

extern   _export"c"  

程序中使用該變數應注意間接引用。  

m_pstatic=(cedit*)getdlgitem(idc_shared);  

m_pstatic->getline(0,*myshareddata,80);

***********************************==

in   dll  

#pragma   once  

#include   "stdafx.h"  

#pragma   data_seg(".shared")  

int   g_nexport   =   33333;  

cstring   g_strexport   =   "dllexport";  

#pragma   data_seg()       

#pragma   comment(linker,"/section:.shared,rws")  

如果dll中定義了共享變數a,exe1載入dll,另外乙個exe2也載入dll,則exe1裡的dll   和   exe2裡的dll將可以訪問同乙個a;而不是exe1和dll之間共享,也不是exe2和dll之間共享。  

另外,exe要訪問dll裡的全域性變數,則dll必須把變數export出來,exe再import,import有隱式或顯式

*************************==

全域性共享變數初始化

DLL和EXE怎樣共享全域性變數?

全域性共享資料 pragma data seg shareddata hwnd sharedwnd null 共享資料 pragma data seg 編譯選項加入 section shareddata,rws 用pragma設定共享資料 pragma data seg mysec char mys...

7 多執行緒 全域性變數 共享全域性變數

多執行緒 全域性變數 共享全域性變數 多執行緒可以對全域性變數進行修改,修改後的結果會影響下乙個執行緒 程序不可以共享全域性變數,子程序是複製父程序的全域性變數,修改後互不影響 from threading import thread import time,random g num 100 def...

MFC共享全域性變數

去網上找資料 看到一條 自己定義乙個.h檔案,然後把所有的全域性變數放在其中,在每個使用變數的檔案中include 好像一般都是這麼做的,尤其是一些比較大的工程,這樣在加其他的全程變數是很方便 但是 去測試的時候一直報錯 error lnk2005 int snumofstudent snumofs...