2017-03-04 9 views
0

私はそれが少し大きいので、私のdllを小さくしようとしています。 私はdumpbinを使用しました。ここに結果があります。私は.rdata部分はdllファイルのリソースが含まれていると思うので 概要私のDLLにはリソースがありません。しかし、なぜ私のDLLの.rdata部分がとても大きいのですか?

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

は、私がこの問題だと思います。しかし、私は私のDLLに任意のリソースを追加していない。

+0

それはなぜ問題なのですか?あなたはconstグローバルを持っていますか?あなたはほとんど情報を提供しませんでした。 – mpiatek

+0

実際に作業している情報とヒントを追加する必要があります。さもなければ、これは推測以外のものではありません。 – overseas

+0

.rdataの部分にはdllファイルのリソースが含まれていると思うので、これは問題だと思います。しかし、私は私のDLLに任意のリソースを追加していない。 –

答えて

1

.rdataは、リソース(リソースによっては、文字列、アイコン、マニフェストなどのWindowsリソースを意味する場合)のみではありません。 .rdataにも定数データが​​含まれています。これだけだろうDLL考えてみましょう:

static const int j[2000]; 

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

jが実際.rdataに配置されることになるが(あなたのサイズで遊ん場合は変更がdumpbin /SECTION:.rdataの出力にsize of raw dataラインに表示されている様子がわかります。だから、同様に大きな定数変数のためのプログラムを点検します。

+0

ありがとう、ありがとうございました。 –

0

元検査に関するRudolfs'の提案に加えて、あなたはおそらくResourceHackerまたは類似のユーティリティを使用してDLLを分解し、.rdataサイズが正当であるかどうかを確認することができます。

+0

ありがとうございます。私はそれを試してみます。 –

関連する問題