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 全局共享变量初始化
#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 全局共享变量初始化
相关文章推荐
- DLL和EXE怎样共享全局变量?
- DLL和EXE怎样共享全局变量?
- DLL和EXE怎样共享全局变量?
- dll和exe的共享节------多进程共享dll/exe全局变量
- dll和exe的共享节------多进程共享dll/exe全局变量
- 当调用的DLL中有全局变量时调用它的多个实例是否共享同一个全局变量?????
- linux动态链接库全局变量共享问题&DLL共享数据段
- 使用DLL在多个进程间共享全局变量
- linux动态链接库全局变量共享问题&DLL共享数据段
- 进程间同步(互斥) 以及 同一DLL的不同进程copy共享全局变量
- dll(动态链接库)之间以及和exe之间的函数、类或全局变量互传
- linux动态链接库全局变量共享问题&DLL共享数据段
- 在Exe和Dll之间共享变量
- linux动态链接库全局变量共享问题&DLL共享数据段
- 当调用的DLL中有全局变量时调用它的多个实例是否共享同一个全局变量
- dll共享全局变量
- 当调用的DLL中有全局变量时调用它的多个实例是否共享同一个全局变量
- python中怎样修改全局变量
- Dll 中设置全局类变量, LoadLibrary 998错误, TLS问题.
- C怎样定义和声明全局变量和函数最好?