#pragma data_seg() 是vc编译器提供的预处理指令,可以实现进程间数据共享。一般用于DLL中,且数据必须初始化,否则编译器会把未初始化数据放到.BSS段中
#pragma data_seg("MySection")
int nSize = 10; // 必须初始化
#pragma data_seg()
#pragma comment(linker,"/SECTION:MySection,RWS") // 设置可读写
JNAAPI int GetValue()
{
return nSize;
}
JNAAPI void SetValue(int value)
{
nSize = value;
}
#endif
用exescope查看,发现多出一个MySection段

测试:
int main(int argc,char **argv)
{
// 当前结果
printf("当前结果:%d\n",GetValue());
// 设置结果
SetValue(25);
printf("设置后的结果:%d\n",GetValue());
getchar();
return 0;
}
启动进程发现打印:10 25
启动另一个进程打印: 25 25,发现数据已被多个进程共享
本文介绍使用#pragmadata_seg预处理指令实现在VC编译器环境下DLL中进程间的数据共享方法。通过实例演示了如何定义共享数据段并初始化,以及如何在不同进程中访问这些共享数据。
5185

被折叠的 条评论
为什么被折叠?



