原文来自 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; }

|