ぴぐノート

Good code is its own best documentation.

雑記

DLLファイルに含まれる関数の調べ方

投稿日:

何かプロジェクトを作成しようとするさいに、インターネットで同じような機能をもったツールを検索するということは当たり前に行われていると思います。
そう簡単に見つかることは多くありませんが、オープンソースなどで公開されていることもあります。

その際にDLLファイルだけをダウンロードできた。なんてことも…。
そんなときにDLLファイルにどんな関数が含まれているか調べたくなることがあります。

実はVisual Studioに含まれる「Visual Studio 用開発者コマンド プロンプト」で簡単に調べることができます。

Visual Studio 用開発者コマンド プロンプトを起動させよう

Visual Studioが導入されていればスタートメニューから簡単に起動させることができます。

  1. キーボードのWindows ロゴキー、もしくは画面左下のWindows ロゴをクリックし[スタート]メニューを開きます。
    Windows10であれば、左下の検索バーをクリックして進んでも大丈夫です。
  2. コマンド」と入力します。
  3. 次に、下記画像のように「アプリ」と記載されている部分、もしくは左上のウィンドウマークをクリックします。
    prompt_001
  4. 「開発者コマンド プロンプト for VS2015」のように開発者コマンドプロンプトが表示されると思います。
    prompt_002
  5. クリックして起動します。
    prompt_003

この「開発者コマンドプロンプト for VS2015」を使い、DLLファイルの中に含まれる関数を調べます。

DLLファイルに含まれる関数を調べよう

まずは調べたいDLLファイルが含まれるフォルダに移動します。
今回は「C:\workspace」に「twain_32.dll」があると仮定し、調べてみます。
twain_32.dllは「C:\Windows」に含まれるファイルです。
誤って場所を変えてしまったり、削除してしまったりしないように注意してくださいね。

  • C:\Program Files (x86)\Microsoft Visual Studio 14.0>cd C:\workspace
    青文字の部分
    を入力します。

次にDLLファイルに含まれる関数を調べます。
これは「dumpbin.exe」というツールを使い調べることができます。
次のように入力し、DLLファイルをdumpbin.exeにかけてみます。

  • C:\workspace>dumpbin /exports twain_32.dll
    dumpbinに続く「/exports」オプションは「指定したDLLファイルからエクスポートされる定義を出力」という意味です。

では結果を見てみましょう。

prompt_004

この「twain_32.dll」には、

  • AboutDlgProc
  • ChooseDlgProc
  • DSM_Entry
  • InfoHook
  • WGDlgProc

という5つの関数が含まれているようです。

まとめ

こういった方法でDLLファイルを調べると、DLLファイルの中にどんな関数が含まれているか調べることができます。
戻り値や引数などの詳しいシグネチャは取得できませんが、関数名が分かれば、その関数名を検索することで、詳しい情報が得られるということも多いです。

今回の例に使った「twain_32.dll」はOSに使用されるライブラリなのであまり詳しい情報などはないかもしれませんが、オープンソースなどで公開されているDLLファイルであればシグネチャ、そして関数の目的なども比較的容易に調べられると思います。

スポンサーリンク

スポンサーリンク

-雑記

執筆者:

関連記事

Windows標準コマンドプロンプトを使って自動採番してみよう!

Windowsのエクスプローラーには自動採番機能があることは、IT関連に勤めていなくてもご存知の方も多いのではないでしょうか。 同じファイル名を付けようとすると、「”pigs &#8211 …

第2新卒やフリーターが未経験からプログラマになるには無料のITスクール!

私が働いている会社でもちょくちょく面接希望の電話がかかってきます。 業界全体として人手不足と言われるコンピューター業界なので、未経験であっても学習意欲が感じられたり何か自分で物づくりを経験していれば、 …

C++のプリプロセッサの復習をしよう その1

C++を勉強していた時期から苦手だったのがプリプロセッサでした。 インクルートガードに#ifndefやら#defineやら#pragma onceやら…。 C++に限った話ではありませんが …

ポイント(pt)からピクセル(px)への変換:DPIについて

写真などの画像ファイルやPDFなどの文書ファイルを扱う際に知っておくこととして、ポイントとピクセル、そしてDPI(Dot Per Inch:1インチあたりのドット数)があります。 ライブラリなどを使う …

【2016年福袋】ヨドバシカメラ 2016年夢のお年玉箱の中身は?

2017年のヨドバシカメラ 夢のお年玉箱はヨドバシカメラ公式のショッピングアプリで”のみ”予約ができると発表されましたね。 ヨドバシカメラの夢のお年玉箱は、例年とても混雑するこ …