一夕残阳 2013-08-14 12:51
浏览 1720

两个进程间能使用共享内存段进行数据共享吗?

我是这样做的:
在一个dll里面定义一个共享数据段,里面定义一个整形数据,然后定义两个导出函数对这个整形数据进行操作。
#pragma data_seg ("ShareDataSeg") //开辟一个名字为"ShareDataSeg"的共享内存段
int g_nShareInt = 0;
#pragma data_seg() //共享内存段"ShareDataSeg"定义结束
//加上这条声明,让这个共享内存段可以在所有动态或静态连接这个DLL的进程中都能看到,这个共享内存段会直接加载到进程堆栈空间
#pragma comment(linker, "/SECTION:ShareDataSeg,RWS")
extern "C" __declspec(dllexport) int SetVal(int val);
extern "C" __declspec(dllexport) int GetVal();

再写两个进程,都加载这个dll,都对这个共享数据段内的整形数据的值进行修改,发现两个进程使用的根本就是两个不同的变量,根本没有进程间共享的效果。
求高手指点!

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 永磁型步进电机PID算法
    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
    • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
    • ¥200 uniapp长期运行卡死问题解决
    • ¥15 latex怎么处理论文引理引用参考文献
    • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
    • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?