怎样将EXE中的全局变量共享给DLL使用
答案:2 悬赏:50 手机版
解决时间 2021-02-28 00:26
- 提问者网友:富士山上尢
- 2021-02-27 00:30
怎样将EXE中的全局变量共享给DLL使用
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-02-27 01:34
dll文件中可以使用全局变量的; DLL文件又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。
全部回答
- 1楼网友:酒者煙囻
- 2021-02-27 03:13
全局共享数据
#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有隐式或显式
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯