ソースコードから exe ファイルが生成されるまで

この資料では、C言語のソースコードから exe ファイルが生成されるまでの過程を説明します。また、ビルド処理についての説明も行います。 ビルド処理の内、特に関数呼び出し (リンク処理) に重点を置きます。 新しく Windows ネイティブアプリケーションの保守担当となった方に向けて書いています。 Visual Studio を用いて実際に動作を確認しながら理解を進めていきます。

Visual Studio の基本編

・(1) 新規ソリューションの作成 ・(2) 成果物フォルダの場所

関数呼び出し編 その1

・(1) 関数呼出 1-1 (同じプロジェクト内,同一ソース) ・(2) 関数呼出 1-2 (同じプロジェクト内,同一ソース,ヘッダーファイル使用) ・(3) 関数呼出 1-3 (同じプロジェクト内,別のソース)

ビルド・プリプロセス編

・(1) プリプロセスとは (.i ファイルの出力,[ファイルの前処理]オプション) ・(2) プリプロセスを追う (#include について) ・(3) プリプロセスを追う (#include による関数の宣言) ・(4) プリプロセスを追う (#define による字句置き換えとマクロ、#if ~ #endif) ・(5) 存在しない関数をコンパイルすると? (リンクエラーについて) ・(6) ビルドとは "プリプロセス"、"コンパイル"、"リンク" である

関数呼び出し編 その2

・(5) 関数呼出 2-1 (別プロジェクトのモジュール(.lib),静的リンク) ・(6) 関数呼出 2-2 (別プロジェクトのモジュール(.dll),動的リンク,暗黙的ロード) ・(7) 関数呼出 2-3 (別プロジェクトのモジュール(.dll),動的リンク,明示的ロード)

Visual Studio の補足編

・(1) 成果物フォルダの場所 (その2)

解析編

・(1) モジュールの公開関数を確認する (dumpbin.exe /exports) ・(2) モジュールの依存モジュールを確認する (dumpbin.exe /dependents) ・(3) モジュールの逆アセンブルを確認する (dumpbin.exe /disasm)

デバッグ編

・(1) デバッグ実行について ・(2) 呼び出し履歴とは ・(3) メモリウインドウとは ・(4) スレッドウインドウとは ・(5) モジュール一覧とは

解析編 その2

・(1) 最も頼りになるエラー情報、ダンプファイル (.dmp) を開く ・(2) 事後解析の地図、pdb ファイル

資料

ファイルと拡張子の表 (exe, lib, pdb, obj, dll)Visual Studio 用語集