Visual C++ 2005 Express Editionとは、C言語の開発を行うことの出来る統合型開発環境です。
Expressとは、Microsoftが無料で言語の習得が出来るように学校や個人向けなどに提供するもので、
このソフトウェアのライセンスは、販売以外の目的(フリーソフトなど)であれば、
自由に使っても良いということです。
なお、市販品はVisualStudioというパッケージになっており、C++やBasicなどが全て一緒になっているもので、
この中からC++部分を抜き出したものをVisualC++と称します。
C++やVB単体での販売はされていないため、購入時は必ずVisualStudioを買わなければなりません。
このExpress版は標準では.NETと単純なDOS画面プログラムのみしか作成出来ませんが、
PlatformSDKやDirectX SDKを使用することで、
市販のVisualStudio 2005とほぼ同等の開発環境を手に入れることが出来ます。
このC++コンパイラは、実は製品版と同等の性能を持っているため、
デバッグビルドやリリースビルドの切り替えはもちろん、
マルチスレッドの有無指定や、コードの最適化による高速化なども可能です。
なお、市販品ではATLやMFCライブラリが入っていますがこれらは無料での提供はありません。
そのため、これらのライブラリを使用するには市販品を購入するしかありません。
ただし、DirectXでゲームを作る分にはこういったものは必要ないため、無くても問題ありません。
最後に、VC6まではコンパイルやリンクという単語だったものが、
それ以降のバージョンではこれらを統一して「ビルド(Build=建てる)」という名前になっています。
1.Visual C++ 2005 Express Edition | ||
まずはメインのプログラムとなるVisual C++ 2005 Express Edition本体をダウンロードします。 http://www.microsoft.com/japan/msdn/vstudio/express/visualc/ |
||
2.Platform SDK | ||
PlatformSDKとは、Windowsのプログラムを作る際に必要なライブラリ一式です。 これは、市販のVCには標準で入っていますがExpress版では含まれていません。 このままだとコンソール(DOS窓)のプログラムしか出来ませんが、 これをインストールすることによりWinAPIを使用した本来のWindowsプログラミングが出来るようになります。 現在の最新版は「Windows Server 2003 R2 Platform SDK」という名前になっています。 ファイルは「5.2.3790.2075.51.PlatformSDK_Svr2003R2_rtm.img」となります。 これもISOイメージとなりますので同じくCDに焼いください。(拡張子をISOに変えてもOK) SDKのダウンロードは下のアドレスから行ってください。※英語 http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A&displaylang=en ISO以外にもWebインストールやフルダウンロード(ISOをHDDに展開してある状態)を選択することも出来ます。 この場合は、このページの下の「Related Resources」から「Windows Server R2 Platform SDK Web Setup」か 「Windows Server R2 Platform SDK Full Download」をクリックしてください。 |
||
3.DirectX SDK | ||
最新のDirectX SDKは、Windows98SE/MEのサポートはされないようです。 もしこれらのOSにも対応させるには、それ以前のSDKを使用する必要があります。 DirectX SDKは以下のページからダウンロードできます。 http://www.microsoft.com/japan/msdn/directx/downloads.aspx 現時点での最新版は「DirectX SDK - December 2006」となっていますが、 これにはDirectX9.0cとDirectX10が入っているようです。 古いOSに対応させたい場合は、このページの下から以前のバージョンのSDKを選んでダウンロードしてください。 なお、Windows98SE/MEのサポートは「DirectX 9.0 SDK Update (October 2006)」以前のものとなるようです。 ちなみにupdateと書いていますが、古いバージョンが必要というわけではないため、 このうちのどれか1つをダウンロードするだけでよいです。 重要 すでにDirectX8 SDKはMicrosoftのWebページからダウンロード出来なくなっています。 このため、SDKを入手するためにはDirectX8関連の書籍を探す必要がありますが、 DirectX9 SDKの初代バージョンには、かろうじてDirectX8の全てのヘッダとライブラリが入っているようです。 このサイトではDirectX8を使用したライブラリを使用するため、これを利用するにはこの初代DirectX9が必要です。 初代DirectX9 SDKは以下からダウンロード出来ますが、いつまで存在するか分からないため、 出来るだけ早くダウンロードしておいてください。(上記のリンクからは行けません) http://www.microsoft.com/downloads/details.aspx?FamilyID=124552ff-8363-47fd-8f3b-36c226e04c85&DisplayLang=en ※正確にはD3DXライブラリと言われるサポートライブラリを使用しています。 DirectX8用にD3DX8、DirectX9用にD3DX9として用意されているのですが、 最新バージョンにはD3DX8は含まれていません。 しかし、DirectX9の初代バージョンではぎりぎり両方のD3DXライブラリが含まれているため、 このサイトで使用するDirectX8での開発が可能な唯一のSDKであると言えます。 |
次に上記でダウンロードしたものを順番にインストールしていきます。
1.Visual C++ 2005 Express Edition | ||
焼いたCDをインストールを行いたいPCに入れます。 すると自動的にインストーラーが立ち上がりますが、もし立ち上がらない場合は CD内のSetup.exeを直接実行してください。 インストールはウィザード形式なので、画面の指示にしたがって順番に進めるだけです。 フィードバックは特にしなくてもよいのでチェックはしないで次を押してください。 使用許諾に同意をして次を押してください。 SQLServerはデータベースを使うアプリを作る場合に使用しますが、 ここでは扱わないためチェックをはずしておいた方が良いです。 ※直接インターネットにつながっているPC(ルーターを使用していないなど)では、 SQLServerが外部から攻撃される恐れがあります。 インストールされるソフトウェアを確認してインストールを押してください。 進行状況が表示されます。 なお、途中で再起動を求められたら再起動をしてください。 再起動をすると、すぐに続きから始まります。 正しくインストールが終わればこの画面が出ます。 終了を押してインストール完了です。 ためしに起動してみましょう。 この画面が出たらとりあえずDOS窓アプリだけは作ることが出来ます。 右下にこのようなポップアップが出たら、これをクリックしてください。 協力をしたい場合は参加を選びますが、ここでは特に参加はしないため、 「参加しない」を選んでOKを押してください。 これで今後このポップアップは出なくなります。 起動テストが終了したら、ひとまず終了してください。 |
||
2.Platform SDK | ||
次にPlatformSDKのインストールを行うため、これを焼いたCDに入れかえてください。 これも自動的に起動するようになっていますが、起動しなければSetup.exeを自分で起動してください。 Nextを押してください。 「I Agree(同意する)」をクリックしてからNextを押してください。 「Custom(カスタム)」を選んでNextを押してください。 ※「Typical」は全てをインストールする設定なのでこちらでもかまいませんが、 必要のないSDKをインストールしたくない場合はCustomを選択します。 インストール先を選択しますがここではデフォルトでOKなので、 そのままNextを押してください。 Custom設定でのインストール時には、どのSDKをインストールするか選択できます。 ここでは最低でも「Microsoft Windows Core SDK」と「Microsoft DirectShow SDK」を選択してください。 その他は任意にインストールしないことも出来ます。 インストール前の確認です。Nextを押してください。 インストール中です。終わるまで待ちましょう。 インストール完了になったらFinishを押してください。 これでインストールは完了ですが、この時点ではまだWinAPIは使えません。 このSDKをVCに登録する必要がありますが、ここではまだ登録せずに先にDirectX SDKもインストールします。 |
||
3.DirectX9.0 SDK | ||
ここでは初代DirectX9.0SDKのインストールの方法を説明します。 最新版のDirectXをインストールしたい場合はこちらをクリックしてください。 ※共存する方法もそちらに記述してあります。 ダウンロードした「dx9sdk.exe」をダブルクリックします。 自動的に展開されたあとインストール画面が出ます。 一番上の「Install DirectX 9.0 SDK」をクリックします。 インストーラーが立ち上がったら、Nextを押してください。 「I Accept・・・(ライセンスを受け入れる)」を選択してNextを押してください。 インストールするコンポーネントを選択します。 最低でも上記の2つ「DirectX Samples and Source Code」と 「DirectX Headers and Libs」をインストール対象にしてください。 ※全て選択しても問題ありません SDKのインストール先を指定しますが、特に理由が無ければ「C:¥DXSDK¥」のままでNextを押します。 1つ前で「Install DirectX Runtime」をインストールするとした場合、このような画面が出ます。 ランタイムとは実際にプレイする人がインストールするものであり、 開発用ではRetail(リテール)版とDebug(デバッグ)版を選べますが、 ここでは速度などを考えてプレイする人と同じRetail版を入れておきます。 ※このランタイムはすでにこれより新しいDirectXが入っていれば更新されません。 Install Nowを押すとインストールが開始されます。 インストール中はしばらく待ちましょう。 インストールが終わったらFinishを押してください。 なお、まだ最初のDirectXのインストールメニューが残っている場合は、 Exitを押して終了させてください。 |
インストールしただけの状態では、まだWindowsプログラミングは出来ません。
これはVisual C++ 2005 Express Edition(以下VCと略)はDOS窓プログラムの設定しか
定義されていないためで、標準では新規プロジェクトにはDOS窓プログラムしか出てきません。
ここでは、まずVCの設定ファイルを書き換えて、Windowsプログラムが出来るように設定します。
1.Win32テンプレートを使えるようにする | ||
まずは以下のファイルをメモ帳などで開いてください。 C:¥Program Files¥Microsoft Visual Studio 8¥VC¥VCProjectDefaults¥corewin_express.vsprops ※インストール先をデフォルトから変更した場合は、インストール先から探してください。 この中の「AdditionalDependencies」を以下のように書き換えます。 AdditionalDependencies="kernel32.lib" ↓ AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib" これは、プロジェクトを新規作成したときに自動的に設定されるlibファイルです。 もしこの設定をしない場合、プロジェクトごとにこれと同様のlibを定義する必要がありますが、 デフォルトとして設定しておけばこの手間が省けます。 ※ここにDirectX8用のd3d8.libなどを定義しておけば、DirectXで使用するライブラリも自動的に定義されるので便利ですが、 これだとDirectX9を使う時などは逆に邪魔になってしまうため、ここでは上記のみの定義でやめておきましょう。 |
||
2.新規プロジェクトの作成時に「Windowsアプリケーション」を選べるようにする | ||
以下のファイルをメモ帳などで開いてください。 C:¥Program Files¥Microsoft Visual Studio 8¥VC¥VCWizards¥AppWiz¥Generic¥Application¥html¥1041¥AppSettings.htm ※htmlファイルなのでダブルクリックするとブラウザが立ち上げってしまうため、 先にメモ帳を開いてからファイル選択にて選んでください。 このファイルの441行目から 444行目(InitControls関数内)をコメント化します。 // WIN_APP.disabled = true; // WIN_APP_LABEL.disabled = true; // DLL_APP.disabled = true; // DLL_APP_LABEL.disabled = true; |
||
3.SDKの参照先をセットする | ||
ここでは、PlatformSDKとDirectX SDKをVCに登録する作業を行います。 これによりウインドウを使ったアプリや、DirectXを使ったアプリを作ることが出来るようになります。 まず、VCを起動して上のメニューの「ツール」から「オプション」を選択してください。 するとオプションダイアログが出ます。 上記の「プロジェクトおよびソリューション」内の「VC++ディレクトリ」をクリックします。 右上が「実行可能ファイル」になっていることを確認し、 その下のウインドウの何も無いところをダブルクリックします。 するとその横にボタンが出るので、このボタンを押してフォルダを参照します。 ここでは「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Bin」を選択してください。 次に、今設定したフォルダを一番上に移動します。 移動したい行を選択し、右上の矢印ボタンで移動します。 同じように今度は「インクルードファイル」を選択し、以下の設定を追加します。 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Include」 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Include¥atl」 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Include¥crt」 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Include¥gl」 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Include¥mfc」 「C:¥DXSDK¥Include」 これらも同様上に移動します。なお、順番は画像のようにしておいてください。 最後に「ライブラリファイル」を選択し、以下を追加します。 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Lib」 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Lib¥IA64」 「C:¥Program Files¥Microsoft Platform SDK for Windows Server 2003 R2¥Lib¥Win95」 「C:¥DXSDK¥Lib」 これもこの順番で上に移動してください。 ※VCはこの記述順にヘッダやライブラリファイルを検索します。 古いバージョンを先に読み込んでしまうと、最新の関数が使えなくなったりすることがあります。 また、PlatformSDKとDirectX SDKの記述順によっても、ビルドが出来なくなることがあるため、 必ず上記の順番にしておいてください。 |
設定が完了したところで、まずは基本的なWindowsプログラムの作り方を説明します。
ここではこのVCを使って開発を行うための流れを一通りやってみることで、
VCの使い方を覚えるということを行います。
また、ここで紹介するサンプルプログラムの細かい説明はしません。
とりあえずVCがまだ起動していなければ起動してください。
標準ではスタートページが表示されると思いますが、これは右上の×ボタンで閉じてしまってかまいません。
1.プロジェクトの新規作成 | |||||
プロジェクトとはアプリ単位でソースコードを管理する機構です。 たとえばここではテストプログラムを作るので、 「テストプログラム用のプロジェクトを作成する」と表現します。 まず、VCの上のメニューの「ファイル」→「新規作成」→「プロジェクト」を選択してください。 新しいプロジェクトとして「Win32」の「Win32 コンソールアプリケーション」を選択します。 次にプロジェクト名を指定します。ここでは仮に「TestProgram」としています。 場所の指定ですが、これは全プロジェクトを1つのフォルダで管理するようなイメージになります。 たとえば上記では「C:¥source」と指定しましたが、このsourceに他のプロジェクトもまとめて入れるという意味になります。 (あくまでも新規作成時であって、必ずこの中にソースを入れなければならないわけではありません) これでプロジェクトを作成すると「C:¥source¥TestProgram」というフォルダが作成され、 実際にはこの中にこれからソースコードなどを入れていく形になります。 なお、ここでは「ソリューションのディレクトリを作成」のチェックははずしておきます。 チェックをすると「C:¥source¥TestProgram¥TestProgram」の中にソリューションファイルがここに置かれますが、 それ以外のファイルは「C:¥source¥TestProgram」に置かれるため、なんだかややこしくなってしまいますので、 余計なフォルダを作らないためにもこのチェックははずしておいた方が無難です。 全て設定できたらOKを押します。 次にこのアプリの詳細を定義します。 「完了」ではなく「次へ」を押してください。 ここで「Windowsアプリケーション」が選択出来るようになっているはずなので、これを選択します。 次に追加オプションの「空のプロジェクト」にチェックを入れます。 これを入れないと、勝手にフレーム型のアプリが生成されてしまい、 余計なソースコードが出来てしまい、初心者にはわけの分からない状況に陥ってしまいます。 間違ってチェックを忘れてしまった場合はもう一度プロジェクトを作り直しましょう。 プロジェクトフォルダをいったん全て削除してしまえば再び同名のプロジェクトを作成できます。 最後に完了ボタンを押すとそのプロジェクトが開きます。 この画面が出たらひとまずOKです。 ためしに「C:¥source¥TestProgram」を見てみると、以下のようなファイルが生成されているはずです。 プロジェクトファイルは拡張子が「sln」となっているものです。 今後、このファイルをダブルクリックすることでも、このプロジェクトを開くことが出来るようになります。 ※VC6では「dsw」となっていました。 |
|||||
2.ソースコードの登録 | |||||
まずは、ソースコードを記述するためにcppファイルを作成します。 上のメニューから、「ファイル」→「新規作成」→「ファイル」を選択します。 新しいファイルとして「Visual C++」の「C++ ファイル」を選択して、開くを押してください。 Source1.cppという名前でファイルが開かれます。 なお、この名前は仮の名前でありまだファイルとして保存はされていません。 メニューの「ファイル」→「名前をつけて Source1.cpp を保存」を選び、 プロジェクトフォルダ「TestProgram」内に「main.cpp」として保存します。 この状態ではただファイルを保存しただけに過ぎないので、 今度はこれをプロジェクトに登録する必要があります。 ソリューションエクスプローラーの「ソース ファイル」を右クリックし、 「追加」→「既存の項目」を選択し、さきほど保存したmain.cppを選択します。 ソリューションエクスプローラーのソースファイルの位置にmain.cppが登録されたら、 プロジェクトへの追加が完了です。 もし、ヘッダファイルを登録したい場合は「ヘッダー ファイル」に対して追加すればここに登録できます。 ちなみにプロジェクト名「TestProgram」から項目の追加を行った場合、 cppやhなどの拡張子を見て自動的に振り分けられます。 また、1つずつではなく複数のファイルを一気に追加することも出来ます。 このフォルダは見た目上のものであり、ビルドにはなにも関係ありません。 分かりやすいようにしているだけなのでこのフォルダ名を変えたり、新たに追加することも出来ます。 |
|||||
3.サンプルソースコード | |||||
とりあえずサンプルコードとして、main.cppに以下の内容をコピーペーストしてください。
|
|||||
4.ビルド | |||||
ソースコードをコンパイル・リンクしてみます。 上のメニューから「ビルド」→「ソリューションのビルド」をクリックしてください。 もしくはショートカットとしてF7キーを押してください。 問題が無ければ下の出力ウインドウに以下のようなメッセージが出ます。 問題があればここにその内容が出ます。 そのエラー行をダブルクリックすれば、直接ソースコードにジャンプすることが出来ます。 |
|||||
5.実行 | |||||
正しくビルドが出来たらあとは実行するだけです。 上のメニューから「デバッグ」→「デバッグ開始」をクリックします。 もしくはショートカットとしてF5キーを押してください。 すぐに今作成したプログラムが実行されます。 このプログラムは単純なウインドウを生成するだけのものです。 終了するには右上の×ボタンを押してください。 |
|||||
6.その他 | |||||
上記までの流れで一通りの作業は終わりですが、 ここではさらに他の重要な設定項目についての説明です。 デバッグビルドとリリースビルド 通常アプリを作成している間は、デバッグモードでビルドを行います。 このモードはエラーが発生したり途中で現在の変数がどのようになっているかを確認できるモードです。 ただし、このため実行速度やコードの最適化はまったく行われません。 最後にそのアプリを公開する場合はリリースモードにてビルドします。 これで最適化された状態や、デバッグ情報などが入らない実行ファイルを作成できます。 なお、デバッグとリリースの切り替えは以下の箇所にあります。 プロジェクトのプロパティ 以下はデバッグビルドやリリースビルド別に設定を変えられるものです。 上のメニューから「プロジェクト」→「TestProgram のプロパティ」をクリックし、 設定ページを出して各設定を変更します。 なお、設定を変更をした場合はビルドをしなおしましょう。 ・シングルスレッドとマルチスレッド スレッドを使用したプログラムを作る場合「マルチスレッド」にて作成する必要があります。 もしシングルスレッドでビルドすると、メモリの確保などで競合が発生して落ちることがあるようです。 VisualC++2005では標準でマルチスレッドにてビルドされるようになっています。 なお、マルチスレッド版ではDLL版とリンク版があり、デフォルトでDLLが使用されますが、 リンクしてしまったほうが余計なDLLを必要としないため、DLLでないものに変更をしてしまいましょう。 ・マルチバイトとUNICODE 日本語でアプリを作る場合はマルチバイト(SJIS)を使えば可能ですが、 日本以外のOSで実行すると文字化けしてしまうことがあります。 これは文字コードと呼ばれる字1つ1つにつけられた番号が、 他の国では違う文字に割り当てられていることが原因で、 これをさけるために統一規格として準備されたものがUNICODEです。 UNICODEは16bitの2バイトで1文字を表現するため、ASCIIコードの半角英数字も2バイトとなります。 このUNICODEを利用すると、なんと1つのテキストファイルに世界の言語で書かれた文章を書くことが出来ます。 そして、このUNICODEのソースコードをVC++2005では書くことが出来ます。 しかしこれには問題があり、今までは文字列をchar型で宣言すれば良かったのが、 すべてWCHAR型で宣言する必要が出てきます。 たとえば以下のような感じで宣言することになります。 char str[] = "文字列"; WCHAR str[] = L"文字列"; 上のほうはC言語本来の書き方ですが、下のほうは文字列の前にLという文字が付きます。 これでマルチバイトではなくUNICODEとして定義された文字列ということになります。 全てのプログラムでこのような書き方をしなければならなくなったり、 扱うデータが半角英数字のみであった場合は余計に書くのが増えてしまい、いろいろ厄介です。 VC++2005は標準でUNICODEになってしまっているため、 これをマルチバイトにするには自分で設定を変更しなければなりません。 ※上記のサンプルプログラムもUNICODEとなっているため、最初のほうで定義してある文字列はWCHARになっています。 ためしにこのソースコードをマルチバイトに変更してビルドすると、 この変数を使用している関数でエラーが出るようになります。(WCHARはLPCSTR(char)に出来ないなど) そうしたらWCHARをcharに変えてみればうまくビルドできるようになります。 このサイトでは古いVCも対象にしているため、今後は必ずマルチバイトにしてください。 ・32bitと64bit対応 VC++2005では64bit版OSに対応したコードを生成することが出来ます。 しかし、Windows98など古いOSは当然対応していません。 そのためここでは64bitのサポートは切っておきましょう。 ここを「いいえ」に変更してください。 ・exeの出力先 デバッグ実行を行う際のカレントディレクトリは、通常プロジェクトフォルダになっています。 ここでファイルのロード関数を使用すると、この位置から相対で検索されます。 しかし、デバッグビルドではDebugフォルダ内、リリースビルドではReleaseフォルダ内にexeが生成されるため、 VCからではなく直接exeをダブルクリックなどで実行しようとすると、 ロードしたいファイルが見つからないということになってしまいます。 そこで、このexeの出力先をプロジェクトフォルダと同一にすることで、 VCでのデバッグ時と同様のファイル構成で実行が可能になります。 上記の出力ファイルを「$(ProjectName).exe」にするか、任意のexeファイル名にしてください。 たとえば、Release版では「TestProgram.exe」、Debug版では「TestProgramD.exe」と、 Dを最後に付けて両方とも同じ箇所に生成することも出来ます。 デバッグビルドやリリースビルド時の設定を切り替えるには、このウインドウの左上の「構成」から切り替えられます。 |