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されてる関数名とかが判ります
プライバシーポリシー本文は日本語以外に翻訳禁止