Ranga Narasimhan
Microsoft Corporation
適用対象: Microsoft Visual C++ Version 6.0
Visual C++ について
Visual C++ AppWizard
コンソール プロジェクトと Windows® プロジェクト
ワークスペースとプロジェクト
Win32® コンソール アプリケーションの作成
プロジェクトへのファイルの追加
ナビゲーション
コンパイルとリンク
プロジェクトのクリーニングとコピー
ビルド エラーのトラブルシューティング
ワークスペースへの新しいプロジェクトと既存のプロジェクトの追加
ヒント
結論
関連情報
要約: この記事は、C/C++ プログラミングと Visual C++ に初めて接する人のために書かれています。C/C++ プログラミングに関する教則本ではありません。この記事は、読者に Visual C++ 環境を紹介し、以下の作業を行えるようにすることを目的としています。
Microsoft Visual C++ 6.0 は、Visual Studio® 6.0 開発プロダクト ファミリーのメンバです。Standard、Professional、および Enterprise の 3 つの Edition があります。詳細については、MSDN ライブラリの "Visual C++ の各 Edition" を参照してください。
Visual C++ には、32 ビットの C/C++ プログラムの作成、ビルド、および デバッグが行える統合開発環境 (IDE) が用意されています。また、この IDE では、ソース コードのナビゲーションを簡単に行うことができます (詳細については、この記事の ナビゲーション のセクションを参照してください)。
Visual C++ には、新しいプログラムの作成をガイドする AppWizard (アプリケーション ウィザード) のセットが用意されています。これらの AppWizard では、基本的な設定およびコードが提供されるため、かなりの時間を節約することができます。作成するアプリケーションのタイプに応じて、適切な AppWizard を選択することが重要です。
ヒント 詳細については、MSDN ライブラリの "概要: コンソール プログラムの作成" を参照してください。
コンソール プログラムは MS-DOS コマンド プロンプトのもとで実行されることを想定しています。これは 32 ビット プログラムですが、Windows プログラムではありません。C/C++ のコンソール ベース プログラムで最初に呼び出される関数は次のものです。
int main(int argc, char *argv[])
Windows ベースのプログラムで最初に呼び出される関数は次のものです。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
コンソール アプリケーションは、ダイアログなどのユーザー インターフェイスは表示しません。C/C++ プログラミングの初心者は、コンソール アプリケーションの作成に集中することをお勧めします。
Visual C++ は、AppWizard を使って作成されたプログラムを、ワークスペースの中でプロジェクト単位に整理します。つまり、ワークスペースは複数のプロジェクトから構成され、個々のプロジェクトはファイルを含んでいます。プロジェクトはファイルを共有することができます。この構造を次の図に示します。
図 2. Visual C++ におけるワークスペースとプロジェクトの構造
上の図の Sample ワークスペースは、A、B、および C の 3 つのプロジェクトを含んでいます。これらのプロジェクトは、それぞれ a.cpp、b.cpp、および c.cpp の異なる C++ ファイルを含んでいます。これらのファイルは 3 つのプロジェクトの間で共有されています。
ワークスペース情報は.dsw の拡張子を持つファイルに、プロジェクト情報は.dsp の拡張子を持つファイルに格納されています。AppWizard は、デフォルトではワークスペースとプロジェクトを 1 つずつ作成します。ワークスペースに複数のプロジェクトを追加する方法については、後のセクションで説明します。Visual C++ がプロジェクトのために作成する初期ファイルの詳細については、MSDN ライブラリの "Visual C++ プロジェクトに対して作成されるファイルの種類" を参照してください。
別の方法として、プロジェクト ファイル (*.dsp) を開くこともできます。.dsw と.dsp のファイル名拡張子にはシェル エクステンションが関連付けられているので、Windows エクスプローラを使って.dsw または.dsp ファイルを探し、ファイルをダブルクリックすれば、Visual C++ でワークスペースを開くことができます。
以下に、新しいコンソール プロジェクトを作成する手順を示します。
Visual C++ 5.0 ユーザーのための注 このダイアログ ボックスは表示されないので、ステップ 6 は省略してください。デフォルトでは、AppWizard は空のプロジェクトを作成します。
Visual C++ は、TestProgram プロジェクトの一部として、以下に示すファイルのセットを作成します (これらのファイルは C:¥My Programs¥TestProgram ディレクトリに格納されます)。
Visual C++ がプロジェクトのために作成する初期ファイルの詳細については、MSDN ライブラリの "Visual C++ プロジェクトに対して作成されるファイルの種類" を参照してください。
注 .dsw および.dsp ファイルは削除しないでください。.opt および.ncb ファイルは、ワークスペースを開いたときに Visual C++ によって再生成されるので、名前の変更や削除を行ってもかまいません。
上記の操作を行うと、空のプロジェクトを含んだワークスペースが作成されます。空のプロジェクトは、ソース ファイルを何も含んでいません。プロジェクトとワークスペースの両方が TestProgram という名前になります。空のプロジェクトにファイルを追加するには、次の操作を行います。
#include<stdio.h>
float ver;
void main()
{
ver = 6.0;
printf("Welcome to Visual C++ %.1f¥n",ver);
}
図 6 の情報は、TestProgram.exe という実行可能ファイルの作成が、エラーや警告なしに成功したということを示しています。プログラムにエラーが含まれている場合には、このウィンドウに適切なメッセージが表示されます。また、"構成: TestProgram - Win32 Debug" という表示もあります。これはデフォルトの構成であり、"Win32 Release" またはカスタム構成に変更することもできます。詳細については、この記事の コンパイルとリンク を参照してください。
開かれているファイルのコンパイルだけを行いたい場合には、[ビルド] メニューの [コンパイル Test.cpp] を選択します。この操作では、実行可能ファイルは生成されません。詳細については、この記事の コンパイルとリンク を参照してください。
前に述べたように、プロジェクトは.h や.rc といったさまざまな拡張子のファイルをいくつも持つことができます。TestProgram コンソール プロジェクト (「Win32 コンソール アプリケーションの作成」のセクションを参照) にヘッダー ファイル (.h) を追加するには、次の操作を行います。
これで、既存のファイルを再利用することができます。コードの再利用は、C++ を強力な言語としている特長の 1 つです。
Visual C++ のワークスペース ウィンドウでは、きわめて簡単にナビゲーションを行うことができます。このウィンドウを起動するには、[表示] メニューの [ワークスペース] をクリックします。すでに TestProgram コンソール プロジェクト (「Win32 コンソール アプリケーションの作成」のセクションを参照) を作成している場合には、ワークスペース ウィンドウには [ClassView] と [FileView] の 2 つのタブがあります (図 7 を参照)。
図 7. ワークスペース ウィンドウ
[ClassView] タブには、プロジェクトに含まれている C++ クラスとグローバル データが表示されます。TestProgram プロジェクトでは、TestProgram クラス と表示されるはずです (図 7 を参照)。+ 記号をクリックすると、ノードが展開され、[グローバル] フォルダが表示されます。このフォルダをクリックすると、main と ver が表示されます。main 関数を含んでいるファイルを見るには、main をダブルクリックします。これにより、main 関数のところにカレットが置かれた状態で、Test.cpp ファイルが開かれます。
ClassView の詳細については、MSDN ライブラリの "概要: ClassView" を参照してください。
[FileView] タブには、プロジェクトに属しているファイルが表示されます。TestProgram プロジェクトでは、TestProgram ファイルと表示されるようになります。これを (+ 記号をクリックして) 展開すると、[Source Files]、[Header Files]、および [Resource Files] が表示されます。プロジェクトは、[Source Files] フォルダの下に 1 つのファイル (Test.cpp) しか含んでいません。プロジェクトに Test.h という別のファイルを追加すれば、このファイルは [Header Files] フォルダの下に表示されるはずです。これらのフォルダは、それぞれ該当する拡張子を持つファイルを含んでいます。ソース ファイルは通常は.c または.cpp のファイル名拡張子を持ち、ヘッダー ファイルは.h のファイル名拡張子を持ちます。ファイルをダブルクリックすると、ソース エディタでそのファイルが開かれます (図 8 を参照)。
図 8. [FileView] タブ
FileView の詳細については、MSDN ライブラリの "FileView" を参照してください。
また、ウィザード バーをナビゲーションに使用することもできます。ウィザード バーをアクティブにするには、次の操作を行います。
詳細については、MSDN ライブラリの "概要: ウィザード バー" を参照してください。
コンパイル プロセスは、オブジェクト (.obj) ファイルとその他の中間ファイルを作成します。Visual C++ コンパイラの CL.EXE は、すべてのプロジェクト ファイルを入力として受け取り、それらに対応する.obj ファイルを生成します。前のセクションで作成したコンソール プロジェクトでは、選択した構成によって、C:¥My Program¥TestProgram の下にターゲット ディレクトリが作成されます。このディレクトリには、.obj ファイル、中間ファイル、および実行可能ファイルが格納されます。
デフォルト構成は Win32 Debug です。この構成では、実行可能ファイルは C:¥My Programs¥TestProgram¥Debug ディレクトリに格納されます。デバッグ構成では、アプリケーションのデバッグを支援するデバッグ情報がコードに追加されます。デバッグ構成では、コードの最適化は行われません。Visual C++ がアプリケーションのために用意しているもう 1 つの構成は Win32 Release です。この構成は、コードの最適化設定を持っており、デバッグ情報は含んでいません。リリース構成でビルドされたコードは、C:¥My Programs¥TestProgram¥Release ディレクトリに格納されます。詳細については、MSDN ライブラリの "プロジェクト ワークスペースの要素" を参照してください。
リンカ (LINK.EXE) は、.obj ファイルとその他の中間ファイルを入力として受け取り、最終的な.exe を生成します。ビルド プロセスは、まずコンパイラを実行し、次にリンカを実行します。実行可能ファイルを生成するには、プロジェクトのビルドを行わなくてはなりません。ファイルのコンパイルだけを行うと、.obj ファイルが生成されます。
ビルド プロセスは次の図のように示すとわかりやすいでしょう (図 9)。
図 9. ビルド プロセスの図
図 10 のアウトプット ウィンドウは、ビルドの結果を示しています。
図 10. ビルドの結果を表示するアウトプット ウィンドウ
上の画像をクリックすると大きい画像を表示します。
この例では、TestProgram.exe 実行可能ファイルが C:¥My Programs¥TestProgram¥Debug ディレクトリに格納されています。
ビルドの結果は、.plg という拡張子を持つファイルにも格納されています。TestProgram プロジェクトでは、TestProgram.plg ファイルにこの情報が含まれています。詳細については、MSDN ライブラリの "コンパイルとリンク" を参照してください。
プロジェクトのクリーンを行うには、[ビルド] メニューの [クリーン] をクリックします。プロジェクトのクリーンを行うと、実行可能ファイルを含めて、ターゲット ディレクトリ (プロジェクトの構成によって、Debug ディレクトリと Release ディレクトリのどちらか) に含まれるすべてのファイルが削除されます。プロジェクトをフロッピー ディスクなどの別の場所に移すような場合には、プロジェクトのクリーンを行うといいでしょう。これにより、プロジェクトのサイズが減り、コピーが高速化されます。TestProgram プロジェクトの例では、ディレクトリ全体を別の位置にドラッグ アンド ドロップで移動することができます。クリーン後に実行可能ファイルを生成するには、再度ビルドを行う必要があります。
コンパイラやリンカのエラーが発生する理由にはさまざまなものが考えられます。たとえば、正しいヘッダー ファイルがインクルードされていない、入力ミスがあった、コンパイラ/リンカ スイッチが正しく使われていなかったなどです。どのようなエラーであれ、エラーに関する情報はアウトプット ウィンドウに表示されます。
このセクションでは、この記事の 「Win32 コンソール アプリケーションの作成」 のセクションの操作を行って、すでに TestProgram プロジェクトを作成しているとします。次に、Test.cpp ファイルにわざと間違いを入れてみましょう。ファイルの内容を削除し、代わりに次のコードを入力します。
#include<stdio.h>
float ver;
void main()
{
ver = 6.0;
print("Welcome to Visual C++ %.1f¥n",ver); //printf を print に置き換えた
}
プロジェクトをビルドします。アウトプット ウィンドウには、図 11 に示すメッセージが表示されます。
図 11. アウトプット ウィンドウにエラーが表示されている様子
上の画像をクリックすると大きい画像を表示します。
このウィンドウは、Test.cpp ファイルの 8 行目でエラーが発生したことを示しています。この場所に移動するには、アウトプット ウィンドウでエラー メッセージをダブルクリックするか、F4 キーを押します。これは、特に大きなファイルを扱っている場合に便利な機能です。
個々のエラー番号は何らかの意味を持っています。これは Visual C++ のヘルプ システム (MSDN ライブラリ) で調べることができます。この例のエラーは C2065 です。このエラーの原因となるさまざまな理由を調べるには、次の操作を行います。
別の方法として、次の手順を実行しても同じ情報を得ることができます。
printf に関する情報は、最初の行でインクルードされていた stdio.h ファイルに含まれています。stdio.h ファイルを開くと、"print" という名前の関数はないことがわかります。これが、コンパイラがエラーと判断した理由に他なりません。"print" という名前の関数が存在していたとしたら、コンパイル エラーは発生しなかったはずですが、実行可能ファイルの実行時の動作は予期しないものになった可能性があります。
エラー番号の情報は、必ず MSDN ライブラリで確認するようにしてください。MSDN Library Online は http://msdn2.microsoft.com/ja-jp/library/default.aspx でアクセスすることができます。
以下のセクションでは、新しいプロジェクトを追加する方法と、既存のプロジェクトを追加する方法について説明します。
既存のワークスペースに新しいプロジェクトを追加するには、TestProgram プロジェクトの作成 (「Win32 コンソール アプリケーションの作成」 を参照) で使ったステップを、以下の変更を加えて実行します。
たとえば、TestProgram プロジェクトに AnotherTestProgram という名前の新しいプロジェクトを追加する場合、[現在のワークスペースへ追加] を選択すると、パス は C:¥My Programs¥AnotherTestProgram から C:¥My Programs¥TestProgram¥AnotherTestProgram に変化します (図 12 を参照)。
図 12. 既存のワークスペースへの新しいプロジェクトの追加
上の画像をクリックすると大きい画像を表示します。
既存のプロジェクトを追加するには、次の操作を行います。
既存のプロジェクトに別のプロジェクトを追加した場合、ワークスペース ウィンドウにはすべてのプロジェクトが表示されます。たとえば、TestProgram プロジェクトに AnotherTestProgram プロジェクトを追加すると、FileView には両方のプロジェクトが表示されます (図 13)。
図 13. 既存のプロジェクトへの追加
AnotherTestProgram files が太字になっていることに注意してください。これは、このプロジェクトがアクティブ プロジェクトであることを示しています。ビルドを実行したときには、アクティブ プロジェクトがビルドされます。アクティブ プロジェクトを設定するには、[プロジェクト] メニューの [アクティブ プロジェクトに設定] サブメニューを使用します。
詳細については、MSDN ライブラリの "ホームページ : プロジェクトの操作" を参照してください。
この記事では、Visual C++ IDE のナビゲーションと、簡単な C/C++ プログラムの作成に関する基本的な概念を、わかりやすい例を使って説明しました。以下に、読者のために参考資料のリストを示します。この記事の目的は、初心者のプログラマが Visual C++ を使って C/C++ プログラムを作成しようとするときの最初の壁を突破することにあります。
Visual C++ の最新の情報については、以下のリソースを参照してください。
C++ プログラミングの詳細については、以下の文献を参照してください。
この文書には、議論されている問題についての本文書の発行時点での Microsoft Corporation の見解が含まれています。変化するマーケット状況に対応する必要があるため、Microsoft は文書内の情報について責任を負うものではなく、発行日以降も情報が正しいことを保証するものではありません。
このホワイト ペーパーは、情報提供のみを目的としています。Microsoft は明示または黙示を問わず、本書において一切の保証を行いません。
Microsoft は Microsoft Corporation の登録商標です。
本書で言及している他の製品名または会社名は、各所有者の商標であることがあります。
Microsoft Corporation - One Microsoft Way - Redmond, WA 98052-6399 - USA