data_seg

本文介绍使用#pragmadata_seg预处理指令实现在VC编译器环境下DLL中进程间的数据共享方法。通过实例演示了如何定义共享数据段并初始化,以及如何在不同进程中访问这些共享数据。

     #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,发现数据已被多个进程共享 

 

  

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值