DLL共享数据部分不存在错误

时间:2009-11-02 21:34:26

标签: c++ dll

我尝试在DLL中声明共享数据段。我用以下地区宣布该地区:

#pragma data_seg(".shared")
int varx=0; 
#pragma data_seg()
__declspec(allocate(".shared")) 
// I found this declspec suggestion in another forum
#pragma comment (linker,"/section:.shared,RWS")

我也添加

SECTIONS
            .shared READ WRITE SHARED 

进入def文件。但是我总是得到:

LINK : warning LNK4039: section '.shared' specified with /SECTION option does not exist

错误。如果我只做一个(.def或pragma注释)只得到一个,如果两个都得到两个错误。

我想念的一切?

2 个答案:

答案 0 :(得分:3)

我只看到过以这种方式使用的declspec:

 __declspec(allocate(".shared")) int varx=0;

我会尝试只写这个:

#pragma comment (linker,"/section:.shared,RWS")

 __declspec(allocate(".shared")) int varx=0;

避免声明空部分或多重定义的部分

答案 1 :(得分:0)

说清楚:

data_seg更改obj文件中的默认部分名称,其中初始化为非零变量。因此,如果设置varx = 1,则此变量出现在.shared部分中,并将跨进程共享。我的情况是因为varx = 0而没有出现在那里。

请改用#pragma section并指定声明变量时要使用的部分:__ declspec(allocate(“。shared”))int varx = 0.

请勿使用data_seg关键字。这将允许您不共享任何其他初始化为非零的变量:)