社区
进程/线程/DLL
帖子详情
******关于lib中的全局变量******
sunsfq
2005-12-15 02:38:31
我做了一个lib库,里面有一个全局变量
static CCmdParseClass *pFirstClass = NULL;
我要在很多模块里面引用这个lib,但是pFirstClass在每一个模块中会有一个copy,
我想让pFirstClass只有一个实体,任何包含该lib的模块都访问同一个pFirstClass。
如何做到?
...全文
388
13
打赏
收藏
******关于lib中的全局变量******
我做了一个lib库,里面有一个全局变量 static CCmdParseClass *pFirstClass = NULL; 我要在很多模块里面引用这个lib,但是pFirstClass在每一个模块中会有一个copy, 我想让pFirstClass只有一个实体,任何包含该lib的模块都访问同一个pFirstClass。 如何做到?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunsfq
2005-12-15
打赏
举报
回复
debug跟进去确实不行。
下面方法不行。
#pragma data_seg("Shared")
CCmdParseClass *pFirstClass = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
oyljerry
2005-12-15
打赏
举报
回复
lib? 静态库? 静态库会直接link进exe,所以不能share了
oyljerry
2005-12-15
打赏
举报
回复
为什么不行? 什么不行?
sunsfq
2005-12-15
打赏
举报
回复
我的这个工程是lib,不是dll。
oyljerry
2005-12-15
打赏
举报
回复
这样每个附属于DLL的进程都将接受到属于自己的数据拷贝,一个进程的数据变化并不会反映到其他进程的数据中。
-------------这里意思好像就是只能共享读,一个进程改变了数据,其他进程无法获知
sunsfq
2005-12-15
打赏
举报
回复
#pragma data_seg("Shared")
CCmdParseClass *pFirstClass = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
-----------------------------------------------------
这种方法,我试了,不行。
oyljerry
2005-12-15
打赏
举报
回复
.2、利用共享内存DLL
共享数据DLL允许进程以类似于Windows 3.1 DLL共享数据的方式访问读写数
据,多个进程都可以对该共享数据DLL进行数据操作,达到共享数据的目的。在
WIN32中为建立共享内存,必须执行以下步骤:
首先创建一个有名的数据区。这在Visual C++中是使用data_seg pragma宏
。使用data_seg pragma宏必须注意数据的初始化:
#pragma data_seg(“MYSEC")
char MySharedData[4096]={0};
#pragma data_seg()
然后在用户的DEF文件中为有名的数据区设定共享属性。
LIBRARY TEST
DATA READ WRITE
SECTIONS
.MYSEC READ WRITE SHARED
这样每个附属于DLL的进程都将接受到属于自己的数据拷贝,一个进程的数据
变化并不会反映到其他进程的数据中。
在DEF文件中适当地输出数据。以下的DEF文件项说明了如何以常数变量的形
式输出MySharedData。
EXPORTS
MySharedData CONSTANT
最后在应用程序(进程)按外部变量引用共享数据。
extern _export"C"{char * MySharedData[]}
进程中使用该变量应注意间接引用。
m_pStatic=(CEdit*)GetDlgItem(IDC_SHARED);
m_pStatic->GetLine(0,*MySharedData,80);
oyljerry
2005-12-15
打赏
举报
回复
放到共享数据段中来共享
gohappy_1999
2005-12-15
打赏
举报
回复
lib也行?
Kudeet
2005-12-15
打赏
举报
回复
这样只是共享了pFirstClass 指针,可以用全局对象试试
#pragma data_seg("Shared")
CCmdParseClass FirstClass; //必须要初始化
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
Kudeet
2005-12-15
打赏
举报
回复
#pragma data_seg("Shared")
CCmdParseClass *pFirstClass = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
gohappy_1999
2005-12-15
打赏
举报
回复
肯怕不行
sunsfq
2005-12-15
打赏
举报
回复
没有人回答么?
codesys编程手册
中
文版
- **
全局变量
**: 可以在多个POU
中
访问的变量。 - **组态变量**: 用于存储设备配置信息的变量。 **5.3 控制器组态** 控制器组态主要用于指定硬件的具体配置,包括处理器类型、I/O模块等,这是实现控制逻辑的基础。 ...
java笔记 java笔记
- **局部变量**:定义在方法或代码块
中
的变量。 ##### 6.4 成员方法 成员方法是在类
中
定义的方法,用于实现类的行为。 ##### 6.5 This关键字 `this`关键字代表当前对象的引用,常用于区分成员变量和局部变量。 ...
javax.servlet.jar与javax.servlet.jsp.jar
但在其他不包含这些库的环境
中
,需要将它们加入到项目的类路径
中
,或者在Web应用的`WEB-INF/
lib
`目录下。 ### 结论 `javax.servlet.jar`和`javax.servlet.jsp.jar`是Java Web开发的基础,理解并熟练使用这两个库...
c++学习笔记,void*及
全局变量
1. void* 可以指向任何类型的数据。...在定义
全局变量
的头文件
中
声明
全局变量
,并添加关键字extern,在相应.c文件
中
定义该
全局变量
,即赋值。之后在其他包含该头文件的文件
中
就可以使用该
全局变量
了。 3. 关
静态
lib
和
全局变量
初始化
程序链接静态
lib
时,会将使用到的code部分包含进最终的exe或dll
中
,如果
lib
中
定义了
全局变量
,但这个
全局变量
并没有被其他code使用到,那么最终的exe/dll会执行这个
全局变量
的定义语句吗? [Windows 平台] VS2008 ...
进程/线程/DLL
15,466
社区成员
49,170
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章