在C++Builder中创建共享内存段

原创 2001年05月20日 13:28:00

原文来自 community.borland.com
原文名字:Creating A Shared Memory Segment with C++Builder 4.0
译名: 在C++Builder中创建共享内存段
C++Builder 4.0 是第一个支持共享内存段的C++Builder 编译器。本文解释如何在windows DLL中使用此特性。

要改变数据段和类名字,您需要在您想要共享的文件中增加 #pragma option -zR[段名字]和#pragma option -zT[类名字]
下面的代码将输出一个称为'data'的整数。
File: SharedData.cpp
#pragma option -zRSHSEG      // 改变缺省的数据段名字
#pragma option -zTSHCLASS    // 改变缺省的数据类名字

// 初始化我们打算共享的数据
int data = 0;


注意本文件中的段名是SHSEGSHCLASS。
Linker需要一个.def文件来创建共享段。下面是.def文件的内容。

File: Shared.def
LIBRARY SHAREDDLL

SEGMENTS
  SHSEG CLASS 'SHCLASS' SHARED


下面是包含dll入口点的dll源文件以及头文件。
包括了设置及取得共享内存段的方法。
File: SharedDLL.h
#ifdef __DLL__
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif

extern "C"
{
void DLL_EXPORT SetData(int x);
int DLL_EXPORT GetData(void);
}

File: SharedDLL.cpp

#include
#pragma hdrstop

#include "Shared.h"
USEUNIT("SharedData.cpp");
USEDEF("Shared.def");

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
   return 1;
}

extern int data;


void DLL_EXPORT SetData(int x)
{
  data = x;
}

int DLL_EXPORT GetData(void)
{
  return data;
}

在Oracle 11g中用看Oracle的共享内存段---------IPCS

在Oracle 11g中用看Oracle的共享内存段---------IPCS
  • guoyJoe
  • guoyJoe
  • 2013年10月18日 00:34
  • 5187

Linux进程间通信——使用共享内存

下面将讲解进程间通信的另一种方式,使用共享内存。 一、什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的...
  • ljianhui
  • ljianhui
  • 2013年08月24日 10:26
  • 159680

Windows核心编程之共享内存

Windows共享数据和信息的机制:RPC、COM、OLE、DDE、窗口消息、剪贴板、邮箱、管道、套接字以及内存映射文件。 内存映射:通过让两个或多个进程映射同一个文件。(在进程空间中保留一个地址空间...
  • u011677067
  • u011677067
  • 2016年11月10日 10:09
  • 2505

<Unix/Linux>删除key:0x00000000的共享内存方法

在终端下输入命令ipcs -m
  • u013550907
  • u013550907
  • 2014年04月20日 13:55
  • 1825

Linux进程间通信--shmget()共享内存(一)

大多数共享内存的具体实现,都是把由不同进程之间共享的内存映射为同一段物理内存。 多个进程都把该物理内存区域映射到自己的虚拟地址空间,这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。...
  • yusiguyuan
  • yusiguyuan
  • 2015年04月20日 20:19
  • 2300

LINUX共享内存使用常见陷阱与分析

LINUX共享内存使用常见陷阱与分析 October 25, 20112 Comments 所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机...
  • killmice
  • killmice
  • 2014年11月26日 15:07
  • 6891

如何在共享内存上创建C++对象

游戏中通常会使用共享内存来存放一些数据,这样当程序二进制更新(只涉及代码逻辑变更,不涉及数据结构变更),程序core,异常停止等情况发生时,存放在共享内存中的数据并不会丢失。通过这种方式可以大大减少游...
  • dickyjyang
  • dickyjyang
  • 2014年03月17日 19:10
  • 1315

c++中用boost实现共享内存创建map容器

网上有很多创建通过boost共享内存或者在内存中放置vector的例子,但是没找到有创建嵌套map和读取的例子,于是把自己以前写的例子贴出来,没用过的可以少走弯路,自己以后也方便查阅。#include...
  • u010087712
  • u010087712
  • 2016年02月26日 15:00
  • 1711

共享内存在Java中实现和应用

1、共享内存对应应用开发的意义 对熟知UNIX系统应用开发的程序员来说,IPC(InterProcess Communication)机制是非常熟悉的,IPC基本包括共享内存、信号灯操作、消息队列、...
  • kobejayandy
  • kobejayandy
  • 2015年03月26日 00:34
  • 3274

Qt学习—qt共享内存的使用

Qt提供了QSharedMemory类来访问共享内存,实现共享内存的操作。 一、QSharedMemory类常用的操作 1、QSharedMemory类对象的创建 利用QSharedMemo...
  • GDUTLYP
  • GDUTLYP
  • 2016年01月06日 14:27
  • 4701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C++Builder中创建共享内存段
举报原因:
原因补充:

(最多只允许输入30个字)