Libファイル編です Libファイルはビルド時にリンクされるプログラムの部品です 前もって完成した複数のソースファイルをコンパイルしてLibファイルにしておけば、 そのLibファイルをリンクさせるだけで済むので 次回以降は、そのソースファイルのコンパイルの作業を省くことができます プログラムが大きくなるほど、ソースファイル(.cpp)が増え コンパイルに時間がかかるのでこのようにあらかじめコンパイルしておくことで その完成した部品(モジュールといいます)をリンクさせるだけで使えるようになります つまりLibにすることで ・複数のソースファイルをコンパイルして1つのLibファイルへまとめることができる ・コンパイル時間を短縮することができる のメリットがあります 今回はLibファイルを自作して、使ってみましょう まず、Visual StudioでWin32コンソールアプリケーションもしくはWin32プロジェクトを選びます &ref(lib2.GIF); 次へを選びます &ref(lib3.GIF); 「スタティックライブラリ」を選択し、 「プリコンパイラ済みヘッダー」のチェックをはずし 完了を押します &ref(lib1.GIF); プロジェクトが生成され ソリューションエクスプローラが次のようになります &ref(lib4.GIF); ReadMe.txtは自動生成されたものですが プロジェクトには全く関係ないので削除してもかまいません 新規ファイルを作ります ここでは、簡易的にテスト用の関数とクラスを作成します ここでは適当にMyLib.cppとMyLib.hとしておきます 作り方は分割コンパイル編を参考にしてください MyLib.hです // MyLib.h // 多重インクルードガード #ifndef _MYLIB_H_ #define _MYLIB_H_ #include <stdio.h> // テスト用関数 void TestMyLib(); // テスト用クラス class CTestMyLib { public: int a; // コンストラクタ CTestMyLib(); }; #endif // _MYLIB_H_ MyLib.cppです // MyLib.cpp #include "MyLib.h" // テスト用関数実装 void TestMyLib() { printf("Hello MyLib\n"); } ///////////////////////////////////// // テスト用クラス実装 // コンストラクタ CTestMyLib::CTestMyLib():a(10) { } MyLibプロジェクトのプロパティからコード生成の項目を選びます Debugモードならマルチスレッドデバック(MTd)を選びます &ref(lib6.GIF); Releaseモードならマルチスレッド(MT)を選びます &ref(lib7.GIF); コード生成の設定後ビルドをします &ref(lib5.GIF); ビルド後、プロジェクトのDebugもしくはReleaseフォルダにLibファイルが生成されています &ref(lib8.GIF); &ref(lib9.GIF); 続いて、今作ったLibファイルを早速使ってみたいと思います TestLibという空のプロジェクトを作ります 機能編の空のプロジェクトの作り方と同じです &ref(lib10.GIF); TestLibプロジェクトのフォルダに先ほど作った MyLib.hとMyLib.libファイルをコピーします TestLibプロジェクトがDebugモードならMyLib.libはDebugモードで生成したものを TestLibプロジェクトがReleaseモードならMyLib.libはReleaseモードで生成したものを 使います MyLib.cppはコンパイル済みのものがMyLib.libファイルなので不要です &ref(lib11.GIF); 追加後、プロジェクトにヘッダーファイルを追加し MyLibファイルの機能を使用してみます main.cppを作成します // main.cpp #include "MyLib.h" // Libファイルをリンク時にリンクさせる #pragma comment(lib,"MyLib.lib") int main(){ CTestMyLib test; // Lib関数 TestMyLib(); // Libクラステスト printf("MyLibTest a = %d\n",test.a); } &ref(lib12.GIF); TestLibプロジェクトのプロパティからコード生成の項目を選びます Debugモードならマルチスレッドデバック(MTd)を選びます Releaseモードならマルチスレッド(MT)を選びます コード生成はMyLib側と統一しておいてください &ref(lib14.GIF); ビルドして成功すれば、次のようになります &ref(lib13.GIF); ちゃんと呼び出せていますね 次のようなリンカの警告(もしくはエラーが出た場合)、 MyLib側とTestLib側のコード生成が同じであるか確認してください &ref(lib14.GIF); --------------------------------------------------------------- 今回のソースファイルは下からダウンロードできます &ref(Lib.zip); #vote((^ω^)やったお[0],何これwww意味不すぎwww[0],。(`ω´#)。あぁん?最近、だらしねぇな[0])