【发布时间】:2017-11-11 12:21:00
【问题描述】:
如何将共享内存分配给如下所示的静态缓冲区,但使用 CreateFileMapping 和 MapViewOfFile。
#pragma data_seg(".ABC")
__declspec (dllexport) char buffer[10000] = {0};
#pragma data_seg()
#pragma comment(linker, "-section:.ABC,rws")
目标是创建一个在 C++ 和 FORTRAN 应用程序之间共享的静态共享缓冲区,就像使用 data_seg 时所做的那样。在创建动态分配的缓冲区时,FORTRAN 变得很棘手,因为您需要取消引用指针,这也是可行的,但这不是我想要的。
【问题讨论】:
-
真正的问题是什么?
-
我们应该知道
CreateFileMapping和MapViewOfFile是什么吗? -
@JonathanMee:WinAPI 的函数:CreateFileMapping 和 MapViewOfFile。 OP:你的目标是什么,与什么分享?您能否提供更多信息?
-
目标是创建一个在 C++ 和 FORTRAN 应用程序之间共享的静态共享缓冲区,就像使用 data_seg 时所做的那样。在创建动态分配的缓冲区时,FORTRAN 变得很棘手,因为您需要取消引用指针,这也是可行的,但这不是我想要的。
-
@user3716892 是什么让您认为
MapViewOfFile会更好?您仍然会有一个指向动态分配内存的指针(在系统页面文件中)。它不会是静态的。
标签: c++ winapi shared-memory memory-mapped-files data-segment