裏目小僧の部屋

ObjDumpをDLLに使った

Lazarusでプロジェクトの新規作成でライブラリを選べばDLLが作れます。さて小さなコードのDLLを作ったのに200kbyte以上のサイズになる。usesからClasses を外せば半分くらいになったけど、まだ大きい。いったい何がDLLに入ってるの? と調べるツールがObjDumpです。

LazarusにもObjDumpがありました。少し深いパスにありますが windowsなら fpcフォルダからObjDumpで検索すれば見つかります。最近のwindowsだと見つけたうえで 右ボタンか ctrl+shift+Cでフルパス名がcopy出来るので楽になりました。

  • Lazarus\fpcフォルダを開いてObjDumpを検索し ObjDump.exeを右ボタンでパス名copy
  • 確認したいDLLファイルのあるフォルダをctrl+shift+Eで左ペインに出して ターミナルを開く
  • ターミナルの中でマウス右ボタン
  • "x:xxx\lazarus\fpc\xxx\bin\xxx\objdump.exe"のようになってる"の文字を削除
    • 改行すれば ""の外れた文字が表示されるのでマウスでなぞって左ボタンでよい
  • スペース入れて -t -D -S DLL名.DLL >dump.txt として改行
  • dump.txtに逆アセンブル結果が入っています
  • -pで DLLが必要としてるDLLとかExportsされてる関数名とかが判ります

プライバシーポリシー本文は日本語以外に翻訳禁止