我用mapviewoffile得到一个void 指针,然后用long型指针传递就出现错误,看代码:
类定义:
CMap::CMapInit(CString path)
{
hlas=CreateFile(path,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
hmapfile=CreateFileMapping( hlas,NULL,PAGE_READWRITE,0,0,0);
p=MapViewOfFile(hmapfile,FILE_MAP_WRITE,0,0,0);
}
实现:
CString path=dlg.GetPathName();
long *pt;
cmap.CMapInit(path);
pt=(long *)cmap.p;
CString m;
m.Format("%lf",pt[0]);
AfxMessageBox(m);
每次m都是0.00000
求教啊?
类定义:
CMap::CMapInit(CString path)
{
hlas=CreateFile(path,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
hmapfile=CreateFileMapping( hlas,NULL,PAGE_READWRITE,0,0,0);
p=MapViewOfFile(hmapfile,FILE_MAP_WRITE,0,0,0);
}
实现:
CString path=dlg.GetPathName();
long *pt;
cmap.CMapInit(path);
pt=(long *)cmap.p;
CString m;
m.Format("%lf",pt[0]);
AfxMessageBox(m);
每次m都是0.00000
求教啊?
谁能给个代码啊?
CString m;
m.Format("%lf",pt[0]); //<- pt是long型指针。 修改-》m.Format("%l",pt[0]);offset如果不是以4个byte位单位,如果你接下来执行 Double * poffset = pt + *pt 肯定得不到你要的值。