《 程序员的自我修养》一书9.1.3节中描述了DLL共享数据段的功能和原理,本人通过上网搜索并编写测试程序,找到了实现方法,现简述如下:
1. 在DLL实现文件(.c, .cpp)中定义自定义数据段,并指定其读写和共享权限,具体如下:
#pragma data_seg (".myseg")
SHAREDATADLL_API int g_nCount = 0;
SHAREDATADLL_API unsigned char g_pBuff[256] = "aaaaaaaaaa";
#pragma data_seg()
#pragma comment(linker,"/section:.myseg,rws")
其中myseg是自定义数据段的名称,g_nCount和g_pBuff共享的变量,rws表示此自定义数据段具有读、写及共享权限(关键)。
2. 在DLL头文件(.h)中导出上述共享变量
extern SHAREDATADLL_API int g_nCount;
extern SHAREDATADLL_API unsigned char g_pBuff[256];