我做了一个lib库,里面有一个全局变量
static CCmdParseClass *pFirstClass = NULL;
我要在很多模块里面引用这个lib,但是pFirstClass在每一个模块中会有一个copy,
我想让pFirstClass只有一个实体,任何包含该lib的模块都访问同一个pFirstClass。
如何做到?
static CCmdParseClass *pFirstClass = NULL;
我要在很多模块里面引用这个lib,但是pFirstClass在每一个模块中会有一个copy,
我想让pFirstClass只有一个实体,任何包含该lib的模块都访问同一个pFirstClass。
如何做到?
解决方案 »
- CXml操作xml文件后,xml被隐藏了。怎么回事?
- CListBox 的ITEM里可以加一个下拉框吗?
- 重叠IO模式下,使用“完成例程”,那么这个“完成例程”里面对数据的访问是否需要互斥?
- 请教!!!一个函数中调用另一个定义的函数报错,单独调用那函数是正确的,不知怎么回事?
- 哪里有图像处理类(不需要MFC或依赖其他控件等)?
- 如何在treeview里面改变listview的值?
- 如果从CWnd派生的话,怎么实现和CTabCtrl一样的功能呢?就是容器的功能.
- 紧急的问题!VC++坏了后就不能安装了,求大虾指点!
- 请问,有什么函数或者控件可以逐一读出一个目录下的所有文件名?谢谢!
- 大家好,我刚入门让学VC,请问这个程序是怎么实现运行的?
- 如何取线程(有ID)的进程ID?
- LoadIcon(filename)出错
CCmdParseClass *pFirstClass = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
#pragma data_seg("Shared")
CCmdParseClass FirstClass; //必须要初始化
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
共享数据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);
CCmdParseClass *pFirstClass = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
-----------------------------------------------------
这种方法,我试了,不行。
-------------这里意思好像就是只能共享读,一个进程改变了数据,其他进程无法获知
下面方法不行。#pragma data_seg("Shared")
CCmdParseClass *pFirstClass = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")