S SuperMMX Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-27 #2 我觉得你提的问题有问题,因为你是在你自己的程序中调用dll, 使用里面的函数,自然就可以使用该程序的变量(当然在作用域内) 所以说全局变量在你的程序中都可以使用。 可能理解有误, 仅供参考。
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #3 EXE中定义的全局变量要让DLL使用,你要在dll写个函数, 在exe中调用此函数,把这个变量的地址告诉它就可以了
C cheka Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #4 to Pipi : 这种方法能行的通吗?有点怀疑呢,对windows来说,两个EXE或dll各自的4G 虚拟内存独立。既使从dll中得到Exe中某个变量地址也不行。除非通过映像文 件
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #5 你的dll不是你的exe装载的吗? 如果你的exe能调用那个dll的函数就说明是同一个进程了嘛。 dll本身不是一个进程,他和装载他的exe是同一个进程,同一个进程空间。 当然如果dll是其他进程装载的就没这么简单了
你的dll不是你的exe装载的吗? 如果你的exe能调用那个dll的函数就说明是同一个进程了嘛。 dll本身不是一个进程,他和装载他的exe是同一个进程,同一个进程空间。 当然如果dll是其他进程装载的就没这么简单了
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #6 我不明白这个问题: 如果DLL要访问exe里面的全局变量,那么DLL里面只能直接使用该变量,而不能 定义. 但是,不定义变量就直接使用能编译通过吗? 这个问题的确有些毛病,也许是本人愚顿.
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-28 #7 不用传递也可以。 在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的地址(指针)
不用传递也可以。 在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的地址(指针)