我的dll中没有资源。但是为什么我的dll中的.rdata部分如此之大?

时间:2017-03-04 15:44:50

标签: c++ visual-studio dll

我试图让我的dll更小,因为它更大一些。 我用了dumpbin.Here的结果。 总结

   19000 .data
  195000 .rdata
   21000 .reloc
  2C3000 .text

我认为这是一个问题,因为我认为.rdata部分包含dll文件的资源。但我没有为我的dll添加任何资源。

2 个答案:

答案 0 :(得分:1)

.rdata不仅适用于资源(如果您使用资源,则表示Windows资源,如字符串,图标,清单等)。 .rdata还包含任何常量数据。考虑一个只有这个的dll:

static const int j[2000];

__declspec(dllexport) const int* foo()
{
    return j;
}

j实际上会被放置在.rdata中(如果您调整大小,您会注意到size of raw data行中dumpbin /SECTION:.rdata行中的更改如何显示因此,检查你的程序是否还有大的常量变量。

答案 1 :(得分:0)

除了Rudolfs'关于源检查的建议,您可以使用ResourceHacker或类似实用程序反汇编DLL,并验证.rdata大小是否合理。