【发布时间】:2013-07-16 01:01:34
【问题描述】:
我需要使用 DLL 来实现类似于 Linux 共享内存的功能。我的 Windows 编程经验很少,但我认为可以实现我的目标。我想要类似下面的东西:
动态链接库
int x;
void write(int temp)
{
x = temp
}
int read()
{
return x;
}
流程一:
LoadDLL();
write(5); //int x = 5 now
流程2:
LoadDLL();
printf(read()); //prints 5 since int x = 5 from Proccess 1
这个例子自然会忽略竞争条件等,但是有没有一种简单的方法来处理这样的事情?
我将使用 Microsoft Visual Studio 10 创建 DLL。有人能解释一下我如何编写这么简单的东西并将其构建成一个可以加载和调用的 DLL,类似于上面的伪代码吗?
编辑:无法使用共享内存段和内存映射文件,因为我正在创建的进程在不支持上述内容的 LabVIEW 和 Lua 中。但是,它们确实支持 DLL,这就是我需要这种“过时”方法的原因。
【问题讨论】:
-
我相信这个问题略有不同。我有使用 DLL 的要求,因为另一个问题采用了 Joe White 在此处建议的方法来使用内存映射文件。尽管 Mem-Mapped 文件可能也有用,但要满足我的需求,它更具挑战性(如果不是不可能的话)。
-
请参阅blogs.msdn.microsoft.com/oldnewthing/20040804-00/?p=38253,了解一些原因,这是一个糟糕的主意。