やりたいこと
複数のEXEから使用される共通関数の開発をするときの、一例
もっともシンプルな形をとりたい。→コンソールアプリケーション、スタティックリンク
構成のイメージ
実際に作成してみよう…VS2008版
空のソリューションを作成する
VisualStudio を起動する
ソリューションの作成を行う為に、プロジェクトの作成…を選択
シンプルに実装したいのでテンプレートはwin32 コンソールアプリケーションを使用する。
複数のプロジェクトを束ねるソリューションの名前、app1.exeを作成するプロジェクトとしてapp1を指定してみた
ソリューションとプロジェクトが作成された。
単純に、hallow app1 を printf してみよう
ファイルが生成されているソースを打ち込んでみた
Ctrl F5 で実行してみる
おっと、、 改行をするようにしておこっと
複数のプロジェクトから利用されるプロジェクトを作成する。共通モジュールは、一般にダイナミックリンク、スタティックリンクの方法があるが、スタティックリンクの方が、設定する要件が少ないだろう…という予見から、スタティックリンクでやってみる事にする。
作成されました。共通関数を実装してみよう
func.cというソースファイルを作成し、単純なコードを書いた
作成した common_func1 を、app1のmain関数から呼び出してみる
ソースを変更する
このままだと、ヘッダも指定していないし、きっと、動作しないだろう!
いろいろエラーが出たので、片づけていきましょう
func1 を 指定して、コンパイル(ctrl F7)をすると…
コンパイルは通ったapp1のmainをコンパイルすると…
警告が出ている
やはり、common_func1が見つかってない…当然だわなぁそこで、ヘッダファイルを作成し、連係できるようにしてみるか
ヘッダファイルを作成してみる
common_function.hの実装を行い、プロトタイプ宣言の意味からfunc.cからも、ヘッダをインクルードしてみた
app1 の main 側に ヘッダファイルを追加するが、
コンパイルをかけると、ヘッダファイルが開けない…という! プロジェクトが違うから、みれないはずだわねぇコンパイルの段階でも、ヘッダファイルが見つけられないといけないはずなので…コンパイラのインクルードパスの追加を行う
構成は、デバッグビルドもリリースビルドも 同じはずなので、「すべての構成」を選択していおいた
これで、コンパイルも正常終了したようです次に、リンカに対する設定が必要なはず
common_function.lib が存在するディレクトリを指定します。デバッグビルドとリリースビルドは異なるので注意
さらに、libファイル名も指定します
では、ctrl F5 で実行してみよう
動いた!!
新規に追加したapp2に、main.cをドラッグコピーして、ソースをちょこっと修正
app2に、たいし、共通部品を呼べるように、コンパイラオプション、リンカオプションを設定
コマンドラインからも、確認してみよう