我编写了MFC扩展DLL,显式动态调用,有DEF文件,在调用了DLL中的函数后,要取得DLL中的一个变量值,在EXE程序中如何引用这个变量呢? 如题. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在DLL中做一个接口嘛,比如:int GetValue();外面exe就调用GetValue取DLL中变量的值 区取DLL中的函数的地址GetProcAddress()通过其地址进行操作. 如果你的DLL可以修改,那用1楼的方法简单些. 一样是用GetProcAddress,参数给导出变量名,返回的是变量地址。例如:DLL中定义:int x;DEF中:EXPORTSxEXE中:LoadLibrary(……int* px = (int*)GetProcAddress("x");px是x的地址,*px就是x的值。 DLL中的这个变量是字符串,又该如何做?一楼的方法是好,但是,在DLL中的函数返回CString;我还没有用好,在EXE的函数中调用会有问题.所以想引用DLL中的变量.满天星说的我见过,也试过,但和你说的不完全一样,没成,我下去再试试.方法改成下面这样,不知道能不能行?CString x; DEF中: EXPORTS x EXE中: LoadLibrary(…… CString * px = (CString *)GetProcAddress("x"); dll中的变量定义在头文件里,不就行了 弱问一句Lz:为啥要取得DLL中的值呢???Dll是提供一个接口,我们通过调用其功能的,其实数据应该是我们(exe程序)提供的啊。DLL只是对我们提供的数据进行一定的操作啊。以上是我的理解,声明我是最近了解DLL的,有不对的地方大家见笑了。对于lz的问题,是不是我们在应用程序中定义一个变量(exe中)然后通过指针传给Dll,这样需要的数据不就我们顺手就得到了吗?不知道我的回答是不是答非所问,但愿对LZ有帮助。 我想用DLL处理数据后传回,返回用CString 也可以,但常出问题.该问题没解决,满天星讲的试了没成,不知道哪有问题,后来就用返回值是CString ,均为发行模式时,不报错,调试模式仍有问题. d3d中,为什么这个三角形就是画不出来呢?郁闷 为何删除GetClientRect(&rect);就好用了呢 How with VC++ &ADO one can export database table to CSV files MediaPlayer控件问题? 非常简单的菜鸟问题 为什么在link时总是不能写debug文件? 编程好辛苦啊!!我怀疑自己有没耐心坚持下去!! 关于boost asio一个性能改进问题 鄙人刚写了个GOST加密算法的Class,有谁想要? 轻松得分。。。。。。 使用SNMP++开始包,如何写设置OID的值 进程通信的问题
int GetValue();
外面exe就调用GetValue取DLL中变量的值
DLL中定义:
int x;
DEF中:
EXPORTS
x
EXE中:
LoadLibrary(……
int* px = (int*)GetProcAddress("x");
px是x的地址,*px就是x的值。
一楼的方法是好,但是,在DLL中的函数返回CString;我还没有用好,在EXE的函数中调用会有问题.所以想引用DLL中的变量.
满天星说的我见过,也试过,但和你说的不完全一样,没成,我下去再试试.方法改成下面这样,不知道能不能行?CString x;
DEF中:
EXPORTS
x
EXE中:
LoadLibrary(……
CString * px = (CString *)GetProcAddress("x");
Dll是提供一个接口,我们通过调用其功能的,其实数据应该是我们(exe程序)提供的啊。DLL只是对我们提供的数据进行一定的操作啊。
以上是我的理解,声明我是最近了解DLL的,有不对的地方大家见笑了。对于lz的问题,是不是我们在应用程序中定义一个变量(exe中)然后通过指针传给Dll,这样需要的数据不就我们顺手就得到了吗?不知道我的回答是不是答非所问,但愿对LZ有帮助。