社区
进程/线程/DLL
帖子详情
如何使用DLL中的函数设置DLL中的全局变量?
counterbug
2003-06-24 06:29:05
我想调用DLL中的函数去设置DLL中声明的一些全局变量(应声明为static),可设置完后,在调用DLL中其他函数中(DLL内部),这些全局变量却不是后设置的那些值。到底要怎么做才可以呢?
...全文
181
9
打赏
收藏
如何使用DLL中的函数设置DLL中的全局变量?
我想调用DLL中的函数去设置DLL中声明的一些全局变量(应声明为static),可设置完后,在调用DLL中其他函数中(DLL内部),这些全局变量却不是后设置的那些值。到底要怎么做才可以呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
konfyt
2003-09-05
打赏
举报
回复
涨见识了
In355Hz
2003-07-01
打赏
举报
回复
在共享区域保存指针不好。因为在某个进程内部保存到 char** 的指针在另一个进程看来是非法的,建议放弃字符串数组而利用一块足够大的字符数组:
#pragma data_seg(".share")
// 用 szData 存放字符串,offsetData[i] 保存各个字符串位置,用 szData + offsetData[i] 引用。
char szData[65536] = { '\0' };
DWORD offsetData[4096] = { 0 };
#pragma data_seg
#pragma comment(linker, "/section:.share, rws")
counterbug
2003-06-25
打赏
举报
回复
sorry, 没说清楚,是这样的,我要做一个hook的Dll,有一些值要在启动时由dll外部设置,供hook时用。可我设置好后,在hook到一个消息,调用这些变量时,这些变量去不是我设的那些值。有人告诉我要用
#pragma data_seg(".share")
...
#pragma data_seg
在link中设置/SECTION:.share,S
我做了以后却有 LINK : warning LNK4039:
而且也不好使,能具体说明一下该怎么做吗?
counterbug
2003-06-25
打赏
举报
回复
char** 那个我也赋予了初值了,并在后来也设置过了,可是hook处理时,去里面得值却出错,怎么回事啊?
rivershan
2003-06-25
打赏
举报
回复
#pragma data_seg(".share")
...//数据一定要初始化
#pragma data_seg
#pragma comment(linker, "/section:.share, rws")
cneptune
2003-06-25
打赏
举报
回复
#pragma data_seg(".share")
...
#pragma data_seg
#pragma comment(linker, "/section:.share, rws")
counterbug
2003-06-25
打赏
举报
回复
现在对于int 这样类型的已经可以了,可是对于字符串数组char**却不行,总是出错。
怎么才能让char**也有效呢?
o_racle
2003-06-24
打赏
举报
回复
不会的,要把设置的值及时传出来
guoyin
2003-06-24
打赏
举报
回复
有代码吗?应该不会呀!
我就是这么设置的
static AFX_EXTENSION_MODULE IdleDllDLL = { NULL, NULL };
(VC++)
DLL
设置
钩子
函数
,如何让回调
函数
能修改
DLL
中
的
全局变量
在做一个模块测试,将MFC程序
中
的主窗口句柄、成员变量、
全局变量
作为参数传入
DLL
并将值保存到
DLL
的
全局变量
中
,发现在钩子
函数
HOOK的回调
函数
中
调用到的
DLL
全局变量
都是空值(吓尿了),也就是说从外部传入的值虽然保存在
DLL
的
全局变量
里,但是钩子
函数
的回调
函数
根本获取不到!!!可是需要这些变量跟MFC程序进行消息交互呀!!怎么会这样?为什么会这样? 其实每次触发钩子回调
函数
的都是不同的线程,
当调用的
DLL
中
有
全局变量
时调用它的多个实例是否共享同一个
全局变量
?????
当调用的
DLL
中
有
全局变量
时调用它的多个实例是否共享同一个
全局变量
????问题的起因原于自己在工作
中
需要调用一个动态库,而其
中
要用到一个全局的变量才能把需要的句柄给传出来,于是就想,如果有多个进程要调用这个动态库时,后面的进程调用同一个动态库时,是否会把以前调用同一个动态库时的
全局变量
的值改变?????我猜想应该是不会的吧,于是带着这个疑惑,我写了一个示例程序来验证自己的想法。示例代码如下
C# 调用 C++
dll
动态链接库
中
多个
函数
时
全局变量
的问题
最近编写C#程序调用C++语言的算法库,自己尝试在C++
中
封装好
DLL
库,并在一个工程文件
中
同时导出多个
函数
供C#调用。多个
函数
之间需要相互通信,但又不能互相调用,,一个很好的方法就是用
全局变量
来实现,其问题是,C#启动后加载
DLL
文件,在调用某个
函数
后修改的
DLL
中
的
全局变量
值是否会被保存,以供下一个
函数
调用时共享
使用
。 经过实验发现,当C#启动后开始加载
DLL
文件,文件
中
的初始代码就
利用VS2010生成
DLL
文件及
DLL
中
函数
和
全局变量
的
使用
一、首先利用VS2010生成
DLL
文件,步骤如下 1、打开VS2010,在左边的框栏
中
选择C++,
中
间选择win32控制台应用程序,如下图 2、确认后,弹出下面对话框 3、选择下一步,弹出如下对话框,这里一定要选择
DLL
,然后就可以确认了 4、接着在工程的add.cpp文件
中
添加一个add
函数
和一个
全局变量
num,如下图 5
C++导出和
使用
动态库
DLL
(涉及
全局变量
)
C++导出和
使用
动态库
DLL
(涉及
全局变量
)
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章