我想在进程和进程调用的dll之间共享静态/全局变量.exe和dll位于相同的内存地址空间中.我不希望变量在其他进程之间共享.
详述问题:
说是有一个静态/全局变量x在a.cpp.exe foo.exe和dll bar.dll都有a.cpp,所以变量x在两个图像中.
现在,foo.exe动态加载(或静态)bar.dll.然后,问题是变量x是否由exe和dll共享.
在Windows中,这两个人从不分享x:exe和dll将有一个单独的副本x.但是,在Linux中,exe和dll会共享变量x.
不幸的是,我想要Linux的行为.我首先考虑pragma data_seg在Windows上使用.但是,即使我正确设置了共享数据段,foo.exe也bar.dll从不共享x.回想一下,bar.dll加载到地址空间中foo.exe.但是,如果我运行另一个实例foo.exe,则x共享.但是,我不希望x被不同的进程共享.所以,使用data_seg失败了.
我可以通过在exe和dll之间创建一个唯一的名称来使用内存映射文件,我现在正在尝试.
两个问题: