您的位置:首页 > 其它

DLL和EXE怎样共享全局变量?

2012-09-06 17:26 323 查看
全局共享数据

#pragma data_seg ("shareddata")

HWND sharedwnd=NULL;//共享数据

#pragma data_seg()

编译选项加入 /SECTION:shareddata,rws

============================

用pragma设置共享数据:



#pragma data_seg("MYSEC")

char MySharedData[4096]={0};

#pragma data_seg()



然后在用户的DEF文件中为有名的数据区设定共享属性。

LIBRARY TEST

DATA READ WRITE

SECTIONS

.MYSEC READ WRITE SHARED



在应用程序(进程)按外部变量引用共享数据。

extern _export"C"{char * MySharedData[];}

进程中使用该变量应注意间接引用。

m_pStatic=(CEdit*)GetDlgItem(IDC_SHARED);

m_pStatic->GetLine(0,*MySharedData,80);

=====================================

//Global.h 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有隐式或显式

===========================

http://hi.baidu.com/shilyx/blog/item/2017dca29b1777accaefd0e1.html 全局共享变量初始化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: