EXE中定义的全局变量怎样让DLL共享?(5分)

  • 主题发起人 主题发起人 zhangdamin
  • 开始时间 开始时间
我觉得你提的问题有问题,因为你是在你自己的程序中调用dll,
使用里面的函数,自然就可以使用该程序的变量(当然在作用域内)
所以说全局变量在你的程序中都可以使用。
可能理解有误, 仅供参考。
 
EXE中定义的全局变量要让DLL使用,你要在dll写个函数,
在exe中调用此函数,把这个变量的地址告诉它就可以了
 
to Pipi :
这种方法能行的通吗?有点怀疑呢,对windows来说,两个EXE或dll各自的4G
虚拟内存独立。既使从dll中得到Exe中某个变量地址也不行。除非通过映像文
 
你的dll不是你的exe装载的吗?
如果你的exe能调用那个dll的函数就说明是同一个进程了嘛。
dll本身不是一个进程,他和装载他的exe是同一个进程,同一个进程空间。
当然如果dll是其他进程装载的就没这么简单了
 
我不明白这个问题:
如果DLL要访问exe里面的全局变量,那么DLL里面只能直接使用该变量,而不能
定义. 但是,不定义变量就直接使用能编译通过吗?
这个问题的确有些毛病,也许是本人愚顿.
 
不用传递也可以。
在exe中:
在c++:
int _export exp_var;
//全局变量,并将它输出,注意输出的名字加了下划线: _exp_var
在delphi:
var
exp_var:integer;
exports
exp_var;
//全局变量,并将它输出,输出的名字没有变(没有下划线)

在dll中:
GetProcAddress(0,'exp_var') //如果exe是用c++写的名字是 _exp_var
返回的就是exe中exp_var的地址(指针)
 
又学了一招,呵呵!
 
接受答案了.
 

Similar threads

后退
顶部