DLL中使用共享段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DLL中使用共享段相关的知识,希望对你有一定的参考价值。

多个进程调用同一个DLL文件,想在DLL中共享数据,可以使用共享段的方法.在DLL中的声明如下:

(1)在DLL中

#pragma data_seg("ShareData")
__declspec(dllexport) BYTE szKeyName[3] = {};//变量须初始化
#pragma data_seg()
#pragma comment(linker, "/SECTION:ShareData,RWS")//***

也可在.def文件中声明代替***行

SETCTIONS  

   ShareData READ WRITE SHARED  

(2)调用

在调用程序中声明如下:
__declspec(dllimport) BYTE szKeyName[3];

然后象普通变量一样调用,如:

void Ctest1Dlg::OnBnClickedButton5()
{
	TRACE(_T("%d"),szKeyName[1] );
}


以上是关于DLL中使用共享段的主要内容,如果未能解决你的问题,请参考以下文章

进程间通信 - 动态链接库中共享内存(利用DLL的2~3G的地址段空间)

dll与exe之间怎么共享数据

是共享库/dll中的全局变量,跨进程共享

仅在按照意图进行时才更改片段(在这种情况下,他们实际上共享应用程序)

两个程序同时调用一个DLL可以吗

VC 利用DLL共享区间在进程间共享数据及进程间广播消息