想问下通过动态加载DLL的方式能使用库的头文件中定义的全局变量不??

RabbitLBJ 2011-01-18 03:49:55
动态加载,用::LOADLIBRARY,::GETPROCADDRESS,不需要包含库的头文件,不知道这样有没有方式可以关联到库中的全局变量??
...全文
137 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不是这个意思,DLL模块导出的变量跟同一模块内多个cpp共用一个变量是绝对不同的:)
LZ的所有的想法全部是适用于后者的。

系统只提供有GetProcAddress而没有提供 获得导出变量地址的方法
RabbitLBJ 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dobzhansky 的回复:]
那个变量的名字编译后就是一个地址了,
除非你通过某种手段找到地址,
否则就用 get/set 函数
[/Quote]

你是说的这样吗??*(int*)var??这样也不行
Dobzhansky 2011-01-18
  • 打赏
  • 举报
回复
那个变量的名字编译后就是一个地址了,
除非你通过某种手段找到地址,
否则就用 get/set 函数
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 windsonzhl 的回复:]
导出变量跟导出函数一样,同样需要__decspec(dllexport)、__decspec(dllimport)
[/Quote]
只能是静态链接方式,动态链接方式下只能通过导出函数来操作变量
  • 打赏
  • 举报
回复
导出变量跟导出函数一样,同样需要__decspec(dllexport)、__decspec(dllimport)
covsno 2011-01-18
  • 打赏
  • 举报
回复
导出个函数来操作吧
RabbitLBJ 2011-01-18
  • 打赏
  • 举报
回复
请问我这样做的有什么不对吗??
1.先在DLL头文件中定义一个变量extern int var;
2.在DLL CPP文件DLLMAIN中修改var的值为100.
int var;
var=100;
3.在DEF文件中声明:
EXPORTS
var DATA
4.在需要使用的CPP中,extern int var;
然后使用这个变量,却报错,不知道怎么回事啊??
oyljerry 2011-01-18
  • 打赏
  • 举报
回复
需要把全局变量放到dll的共享数据段中访问
renxu350 2011-01-18
  • 打赏
  • 举报
回复
可以,但是如果需要DLL跨两个进程装载,并共享同一个变量的话需要将共享的全局变量定义在共享数据段内

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧