VS2010_DLL_共享数据段
1、问题:写了一个DLL,自己一直测试不成功(程序A设置了 数值之后,程序B 始终读不到 读出来的都是初始化时的数值...)
具体过程:
(1)、DLL当初没想要用 共享数据段,测试使用 一直都是OK的
(2)、ExeA 和 ExeB 都会使用这个DLL
(3)、想要简单的 进程通信功能,于是添加了 共享数据段。
(4)、我测试时是这样:ExeA(存在于 目录A),ExeB(存在于 目录B),目录A != 目录B。我编译好DLL后,将DLL分别复制到 目录A 和 目录B。然后测试-->不成功,一直不成功...VS里面的设置也弄过一些,就是不成功...
(5)、找了个XP的笔记本,将 ExeA、ExeB、DLL 放于某一目录 --> 测试OK(奇怪了)
(6)、VMWare 打开 Win7 x86,将 ExeA、ExeB、DLL 放于某一目录 --> 测试OK(见鬼)
(7)、尝试各种方式,最后 将开发的机子上面的 ExeA 复制到 目录B 中 --> 测试OK(C.A.O.)(此时 ExeA、ExeB、DLL位于同一目录)
所有网页文章,都未提及此事...
2、http://blog.csdn.net/xuplus/article/details/2291860
#pragma comment(linker,"/SECTION:flag_data,RWS")
这种方法只能在没有def文件时使用,如果通过def文件进行导出的话,那么设置就要在def文件内设置而不能在代码里设置了。 SETCTIONS
flag_data READ WRITE SHARED 在主文件中,用#pragma data_seg建立一 个新的数据段并定义共享数据,其具体格式为:
#pragma data_seg ("shareddata") //名称可以
//自己定义,但必须与下面的一致。
HWND sharedwnd=NULL;//共享数据
#pragma data_seg()
仅定义一个数据段还不能达到共享数据的目的,还要告诉编译器该段的属性,有两种方法可以实现该目的 (其效果是相同的):
一种方法是在.DEF文件中加入如下语句: SETCTIONS shareddata READ WRITE SHARED ;
另一种方法是在项目设置链接选项(Project Setting --〉Link)中加入如下语句: /SECTION:shareddata,rws
ZC:也就是说,“告诉编译器该段的属性”的方式有3种:
(1)、"?.cpp"文件中“#pragma comment(linker,"/SECTION:xxxxxx,RWS")”(还要注意"RWS"前面不能有空格)
(2)、".def"文件中,加入“SETCTIONS xxxxxx READ WRITE SHARED”
(3)、设置链接选项(Project Setting-->Link)(ZC:这是VC6里面的设置位置,VS2010应该是:项目-->属性-->配置属性-->链接器-->命令行)中加入“/SECTION:shareddata,rws”
3、
4、
5、
VS2010_DLL_共享数据段的更多相关文章
- VC++共享数据段实现进程之间共享数据
当我写了一个程序,我希望当这个程序同时运行两遍的时候,两个进程之间能共享一些全局变量,怎么办呢?很简单,使用VC\VC++的共享数据段.; #pragma data_seg()//恢复到正常段继续编程 ...
- #pragma data_seg() 共享数据// MyData段 // 进程 // DLL
https://www.cnblogs.com/dongsheng/p/4476157.html http://www.cnblogs.com/CBDoctor/archive/2013/01/26/ ...
- #pragma data_seg 共享数据区(转)
原文地址:http://www.cnblogs.com/CBDoctor/archive/2013/01/26/2878201.html 1)#pragma data_seg()一般用于DLL中.也就 ...
- DLL入门浅析(5)——使用DLL在进程间共享数据
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/21/90734.html 在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的 ...
- 【C++】DLL内共享数据区在进程间共享数据(重要)
因项目需要,需要在DLL中共享数据,即DLL中某一变量只执行一次,在运行DLL中其他函数时该变量值不改变:刚开始想法理解错误,搜到了DLL进程间共享数据段,后面发现直接在DLL中定义全局变量就行,当时 ...
- windows核心编程之进程间共享数据
有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存 ...
- python 进程间共享数据 (一)
def worker(num, mystr, arr): num.value *= 2 mystr.value = "ok" for i in range(len(arr)): a ...
- 【转】asp.net中利用session对象传递、共享数据[session用法]
来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...
- asp.net中利用session对象传递、共享数据[session用法]
下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session[“name”]=textbox1.text ...
随机推荐
- Wisdom RESTClient支持自动化测试并可以生成API文档
Wisdom REST Client V1.2 支持自动化测试RESTful API并生成精美的测试报告,同时基于历史数据自动生成精美的RESTful API文档. 工具地址:https://gith ...
- Tomcat配置Manager管理员
修改文件: D:\MyDev\Tomcat\apache-tomcat-7.0.68\conf\tomcat-users.xml 配置内容: <role rolename="mana ...
- codeSourcery交叉编译环境
arm-none-Linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括 ...
- 前端异步的一种方法库:axios
关于axios,其实原本在做开发的几年里并不知道,一直使用的也都是jquery的ajax.后来因为一个同事的述说,我才知道有这么个库,基于promise的http库. 看来,以前的我确实比较井底之蛙了 ...
- 关于HashSet的equals和hashcode的重写
关于HashSet的equals和hashcode的重写:package Test; import java.util.HashSet; import java.util.Set; public cl ...
- Eloquent JavaScript #13# HTTP and Forms
索引 Notes fetch form focus Disabled fields form’s elements property 阻止提交 快速插入单词 实时统计字数 监听checkbox和rad ...
- ELK学习笔记之Grok patterns正则匹配
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns USERNA ...
- 在虚拟机上安装gho、esd(wim)系统镜像文件
gho.esd(wim)等文件不能被虚拟机识别,但如果把它们打包成iso就可以了. 另外,还需用到能在虚拟机上运行的WinPE的iso文件,本文用的是微PE. 注意:安装虚拟机提示operating ...
- P4219 [BJOI2014]大融合(LCT)
P4219 [BJOI2014]大融合 对于每个询问$(u,v)$所求的是 ($u$的虚边子树大小+1)*($v$的虚边子树大小+1) 于是我们再开个$si[i]$数组表示$i$的虚边子树大小,维护一 ...
- 这五件事,二次SaaS创业的老炮儿都在做(转)
在我看来,我们现在正处在SaaS公司发展过程中的第三代.第一代SaaS公司有Salesforce.Netsuite和Webex等.紧接着兴起的第二代SaaS公司大多都是利用Salesforce或其他网 ...