質問

私は最近Delphi XEを使用しましたが、RTTIのためにEXEサイズは非常に大きいです(私は思う)

rttiを削除する方法で、delphi 2009アプリケーション(490 kb)と同じくらい小さいアプリケーションサイズをcomprssionなしで削除できます。そして、RTTIの使用は何ですか

役に立ちましたか?

解決

要するに(Splashの答えのリンクによって提供される完全なストーリー):

{$ rtti明示的方法([])プロパティ([])フィールド([])}

ご了承ください Xe6以降、これはRTTIを無効にする個々のユニットにある必要があります。 その前に(xe5以下)、それはDPRファイルにある可能性があり、プロジェクト内のすべてのユニットに適用されます。

他のヒント

あなたの問題はRTTIとは関係ありません。比較的少ない増加(100〜200K)について話している場合、これはRTLの追加機能(Unicodeサポートなどに追加)によるものです。 500〜700kの増加が得られた場合は、VCL UIユニット(フォーム、コントロールなど)をリンクするかどうかを確認してください。 3MBの増加が得られると、追加のデバッグシンボルをオンにします。

これは、一部のジェネリック機能がSYSユニットに追加されたためです。ジェネリックは2009年に追加されましたが、システムユニットでは、一部のクラスはXEおよびXE2のジェネリックで書き換えられました。私見では

このフラグを追加してサイズを小さくします DPRファイル(プロジェクト>ソースを表示) 個々のユニット(xe5の場合)*。

{$SETPEFlAGS IMAGE_FILE_DEBUG_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED or
 IMAGE_FILE_LOCAL_SYMS_STRIPPED OR IMAGE_FILE_RELOCS_STRIPPED}

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

(*) ご了承ください Xe5以降、これはRTTIを無効にする個々のユニットにある必要があります。 その前に(xe4以下)、それはDPRファイルにある可能性があり、プロジェクト内のすべてのユニットに適用されます。

アプリケーションに非常に多くのサイズのオーバーヘッドを追加するのはRTTIだとは思いません。どうやってそれがあるか知っていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top