在C++Builder中建立共享記憶體段 (轉)

gugu99發表於2008-05-17
在C++Builder中建立共享記憶體段 (轉)[@more@]

原文來自 community.borland.com
原文名字:Creating A Shared Memory Segment with C++Builder 4.0
譯名: 在C++Builder中建立共享段
C++Builder 4.0 是第一個支援共享記憶體段的C++Builder 。本文解釋如何在 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 WIN 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;
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1004165/,如需轉載,請註明出處,否則將追究法律責任。

相關文章