在DLL中如何共享数据? 在DLL中如何共享数据?我想让DLL中的变量被所有的线程共享,怎么定义这个变量? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果希望被所有调用该DLL的进程所共享,可以:#pragma data_seg(".SDATA")//定义全局数据#pragma data_seg() To : masterdog(掌门狗) 我试过了不行,以下是按你的提示做的,我用的是Win2K。为什么?请指教。#pragma data_seg(".SDATA")int iShareData = 0;#pragma data_seg() 不好意思,如果你用的是VC的话,还需要在Project/Setting/Link的Project Options:中加上选项:-SECTION:.SDATA,RWS 这样也可以:1.在源文件中定义:#pragma data_seg(".sdata")//你的全局变量#pragma data_seg()这样编译器将为你生成一个.sdata的段,这个段在调用此DLL的各进程间是共享的。但前提是这些全局变量必须在定义时被初始化,否则编译器将把它放入.bss段中,此段存储所有未被初始化的全局变量。2.在.DEF文件中,声明.sdata段为共享段:SECTIONS .sdata READ WRITE SHARED 没有用的,共享内存段只在W9X下有效,NT/2000/XP已经不支持共享内存段了。 用MapFile做进程间的数据共享啊! To masterdog(掌门狗) 行了,谢谢。20分送上 To BCB_FANS:你错了,MSDN/Knowledge Base/Q125677中明确指出,这种方法适用于所有Win32平台:Win95/98/NT4/2000 这样的网络程序怎样写?(急需) 为什么WM_PAINT第一次绘制不显 k线图上十字光标的问题 C#调用MFC扩展dll??急,急 为什么不能捕获字符串转数字的异常? 求东西!!! 求声音的频谱分析算法,就像winamp的柱状显示。 Virtual List Control如何刷新? 请问输出的问题 怎样比较以十六进制方式显示扇区中的字符。 看msdn的InterlockedDecrement没看明白干吗的?哪位通俗一些的说明一下(立刻给分) 控件问题
为什么?请指教。#pragma data_seg(".SDATA")
int iShareData = 0;
#pragma data_seg()
1.在源文件中定义:
#pragma data_seg(".sdata")
//你的全局变量
#pragma data_seg()
这样编译器将为你生成一个.sdata的段,这个段在调用此DLL的各进程间是共享的。但前提是这些全局变量必须在定义时被初始化,否则编译器将把它放入.bss段中,此段存储所有未被初始化的全局变量。
2.在.DEF文件中,声明.sdata段为共享段:
SECTIONS
.sdata READ WRITE SHARED
行了,谢谢。
20分送上
你错了,MSDN/Knowledge Base/Q125677中明确指出,这种方法适用于所有Win32平台:Win95/98/NT4/2000