进程在Windows中运行起来的时候,所用到的所有DLL会以内存映射的形式,或都叫做文件映射的形式映射到进程的地址空间中来,从而进程可以找到对应的DLL并且调用其中的方法,使用其中的资源。因为在不同进程中地址空间不同,所以共享数据段中不可以使用指针。++DLL工程:,内容如下:#include<>#include<>#include""void__stdcallSetData(LPSTRs);void__stdcallGetData(LPSTRs);可以看到这其中有两个方法,分别是我们用来存取数据的。可以在不同的进程中使用。那么数据存在哪里呢,这里就是真的的共享数据段放在哪里了。,其中如下的内容。#include""#pragmadata_seg(".MYSEC")charMySharedData[4096]={0};#pragmadata_seg()void__stdcallSetData(LPSTRs){strcpy(MySharedData,s);}void__stdcallGetData(LPSTRs){strcpy(s,MySharedData);}说明如下:#include""。void__stdcallSetData(LPSTRs){strcpy(MySharedData,s);}void__stdcallGetData(LPSTRs){strcpy(s,MySharedData);}这两个方法不用说就是我们用来存取数的真正方法了。那么可以看到数据是被保存在MySharedData这个数组中了。那么我们来看它的定义。#pragmadata_seg(".MYSEC")charMySharedData[4096]={0};#pragmadata_seg()定义没有什么好奇怪的,但是在定义的前后分别的点东西,这个很重要,这个啊就是用来说明这是一个数据段的。(".MYSEC")是这个数据段的标识,或者说是名字。这样是不是就可以了呢,还不行,这样定义之后,我们的数据只是在了一个自己段里,并没有什么其它的不同,如何让其成为一个共享的段呢,还要一点工作。要想设置其成为一个共享的段有两种方法:?加入def文件说明之:,其中内容如下:LIBRARY"SharedDll"SECTIONS.******@******@2说明:,就是来说明我们当前的段是一个共享的数据段的。下边:******@******@2是说当前的Dll会导出这两个方法到外边,共com调用。然后就是告诉编译器这个文件是我们的一个定义文件,做法,右键点击工程,打开属性,configura
DLL共享数据 来自淘豆网m.daumloan.com转载请标明出处.