DLL中建立进程共享数据段需要注意的语法问题

本文介绍了在VC++中创建DLL共享数据段时可能会遇到的语法问题,包括数据段名称大小写敏感性、变量初始化要求及rws指令前的空格错误。这些错误可能导致共享段设置失败但仍能编译通过,从而引发潜在的安全隐患。
摘要由CSDN通过智能技术生成

默认情况下,所有的数据段都是进程独立的,每个进程有自己的一份。但有时候进程共享一个数据段也是有需要的,为此VC++编译连接器提供了专门的语法,下面是一个典型的例子,建立了一个名为Shared的共享数据段,该数据段里只有一个变量g_hwndOwner。


// 进程共享区 ///
#pragma data_seg("Shared")
HWND g_hwndOwner = NULL;		// 调用SetWindowsHookEx的线程的主窗口
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws") // 可读,可写,进程间共享。所有加载此dll的进程共享一份内存


看似简单的东西,却往往很容易让我们犯错。下面是几个需要注意的语法问题:

(1)数据段的名称为“Shared”,那么在设置该段属性的时候,一定要保证段名称完全与“Shared”相同,而且大小写敏感。一旦两者不同,连接器会警告错误。

>LINK : warning LNK4039: 用 /SECTION 选项指定的节“Shar2ed”不存在。注意是警告错误,所以DLL文件会继续编译连接成功,只是Shared数据段并没有设置为共享段。


(2)共享段中的变量一定要初始化,否则连接器也会报错,也不能正常设置为共享段。

1>LINK : warning LNK4039: 用 /SECTION 选项指定的节“Shared”不存在。 但是继续生成dll文件。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值