C++Builder编写dll时如何添加共享数据段

firedrakexxx 2003-10-09 06:13:50
C++Builder编写dll时如何添加共享数据段
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesry 2003-10-23
  • 打赏
  • 举报
回复
提示
[Linker error]Section SHSEG define in .def file is empty
yesry 2003-10-22
  • 打赏
  • 举报
回复
CityHost 2003-10-22
  • 打赏
  • 举报
回复
创建共享数据段,
原文来自 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;
}


勉励前行 2003-10-22
  • 打赏
  • 举报
回复
只記得,以前的貼子中有說過。
yesry 2003-10-22
  • 打赏
  • 举报
回复
ding
sfemil 2003-10-10
  • 打赏
  • 举报
回复
共享节在CB中编译无法通过在VC中可以.
相关信息参见 机械工业出版社 windows核心编程 中有详细论述它是一本很不错的书值得看看.
ljlln 2003-10-10
  • 打赏
  • 举报
回复
gz
ddsft 2003-10-10
  • 打赏
  • 举报
回复
顶!!强列关注!!!
54783szg 2003-10-10
  • 打赏
  • 举报
回复
另外加一个头文件,这种方法我用过,将所有全局共享的数据都可以放在这个头文件里,动态库其它函数也可以访问的!!!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧