ソースコードから 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 用語集