我想在两个进程间内存映射一个类,但是单单映射字符串可以收到,映射一个类过去后,里面的成员值都为空了,麻烦各位帮忙看看是什么问题。。
代码:
进程1
MyStruct st;
st.a = 23;
st.b = 2323;
SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES) };
sa.bInheritHandle = TRUE;
HANDLE hfilemapping = CreateFileMapping(INVALID_HANDLE_VALUE, &sa, PAGE_READWRITE, 0, 8024, "test");
MyStruct* mapview = (MyStruct*)MapViewOfFile(hfilemapping, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 0);
mapview = &st;
MessageBox("ss");
进程2
HANDLE hfilemapping = OpenFileMapping(FILE_MAP_WRITE | FILE_MAP_READ, TRUE, "test");
MyStruct *ff = (MyStruct*)MapViewOfFile(hfilemapping, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 0);
ff的值是空的。
VC C++ MFC
------解决方案--------------------
你把mapview指向st是没有用的,
你要把st的内容写到文件中才可以。
------解决方案--------------------
要序列化/反序列化才行。