#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段

    

data_seg_数据

 

    测试: 

    


int main(int argc,char **argv)
{
// 当前结果
printf("当前结果:%d\n",GetValue());

// 设置结果
SetValue(25);
printf("设置后的结果:%d\n",GetValue());

getchar();
return 0;
}


    启动进程发现打印:10 25

    启动另一个进程打印: 25 25,发现数据已被多个进程共享