VC PlusPlus:基本的な使い方 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(プロジェクトの新規作成)
(プロジェクトの新規作成)
 
1行: 1行:
 +
[[VC PlusPlus]]に戻る
 +
 +
== '''概要 Visual Studio''' ==
 +
:こういうアプリケーションを開発するための大規模なアプリを日本語では統合開発環境と言います。英語ではIntegrated Development Environment=IDEとされていると思います。
 +
 +
 +
:[[ファイル:20181025 VSLogo.png|600px|thumb|none|Visual Studio Community2015]]
 +
 +
 
== '''起動''' ==
 
== '''起動''' ==
 
: Visual Studioには様々なバージョンがありますが、管理人は
 
: Visual Studioには様々なバージョンがありますが、管理人は
25行: 34行:
  
  
:[[ファイル:20181021 VS NewProject.png]]
+
:[[ファイル:20181021 VS NewProject.png|600px|thumb|none|プロジェクトの新規作成menu]]
  
  
:すると、どういうのをつくりますか?的なややこしいウィザードが始まります。あぅ、どういうのを作るかとかそんなの考えてなかった…。とかあると思います。Windowのプログラムを作るなら、Windowsプロジェクト。黒いコンソール画面で文字列で処理する場合はWindowsコンソールプロジェクト。DLLをつくる場合は…と、やることによって選択するべきものは違いますが、まぁせっかくなんでWindowsのプログラム作ってみる?ってことで、ここではWindowsプロジェクトを選択しましょう。
+
: すると、どういうのをつくりますか?的なややこしいウィザードが始まります。あぅ、どういうのを作るかとかそんなの考えてなかった…。とかあると思います。Windowのプログラムを作るなら、Windowsプロジェクト。黒いコンソール画面で文字列で処理する場合はWindowsコンソールプロジェクト。DLLをつくる場合は…と、やることによって選択するべきものは違いますが、まぁせっかくなんでWindowsのプログラム作ってみる?ってことで、ここではWindowsプロジェクトを選択しましょう。
  
  
35行: 44行:
  
  
:プロジェクトの名前とプロジェクトの作成するフォルダを選択する必要があります。プロジェクトを保存する場所は、昔はスペース空白文字は嫌がられていましたが、最近はスペースを含めても良いので、'''フォルダのパス全体を通して、アルファベットのみを使い、記号はあまり使わない名前だけにした方が無難'''です。いろいろな外部のプログラムを参照する関係で、日本語文字があるとうまく動作しない場合は多いです。あれ?おかしな?と思ったら、全角のC++フォルダの中にプロジェクトがおかれていたりといこともあります。C++としたい気持ちもわからないでもないですが、Cppとかにしましょう。フォルダ階層が深いとかっていうのも、ハマる原因になることもあります。プロジェクトの名前も長すぎると、プロジェクト名を含んだクラス名(プログラムの中に使われるユーザが命名できる関数の発展したものがクラスです。)が自動で沢山作られる関係もあるので、あまり長すぎない方がいいと思います。プロジェクト名とコンパイルしたりリンク処理したりする際に必要なコマンドラインプロパティも自動で生成されて、プロジェクト名に使われている名称は簡単に変更できるようなものではないです。
+
: プロジェクトの名前とプロジェクトの作成するフォルダを選択する必要があります。プロジェクトを保存する場所は、昔はスペース空白文字は嫌がられていましたが、最近はスペースを含めても良いので、'''フォルダのパス全体を通して、アルファベットのみを使い、記号はあまり使わない名前だけにした方が無難'''です。いろいろな外部のプログラムを参照する関係で、日本語文字があるとうまく動作しない場合は多いです。あれ?おかしな?と思ったら、全角のC++フォルダの中にプロジェクトがおかれていたりといこともあります。C++としたい気持ちもわからないでもないですが、Cppとかにしましょう(CXXとするのもいかしたネーミングセンスかもね)。フォルダ階層が深いとかっていうのも、ハマる原因になることもあります。プロジェクトの名前も長すぎると、プロジェクト名を含んだクラス名(プログラムの中に使われるユーザが命名できる関数の発展したものがクラスです。)が自動で沢山作られる関係もあるので、あまり長すぎない方がいいと思います。プロジェクト名とコンパイルしたりリンク処理したりする際に必要なコマンドラインプロパティも自動で生成されて、プロジェクト名に使われている名称は簡単に変更できるようなものではないです。
 +
 
 +
 
 +
 
 +
: プロジェクトの名前を入力欄に入れると勝手にソリューション名も同じ名前になるように自動で入力内容が更新されます。ソリューション名を変えたい!場合はプロジェクト名を入力しおわった後に、ソリューション名を入力しましょう。ソリューションをコピーしたり、プロジェクトをコピーしたりするのは、それほど単純なものではありません。プロジェクトを作ってから、あとで、フォルダ毎違うところに移動させようとか思っていると、ハマります。動作しなくなる場合があります。気を付けてください。人からもらったソリューションもパスが異なると思いますし、プロジェクトが外部のシステムを参照していたら、同じシステムを同じパスに配置しておかないと動作しないとか、山ほどの設定を確認する必要がある場合もあります。配布している人はそいういったタグイの細かいシステム調整をどういう風に解決し、どういう風な環境を構築しておかないといけないか、教えてくれる人は意外と少ないです。自分で気付け!っていうのも多いです。やさしい人は、手取り足取り教えてくれます。権利の関係で教えられないとか、自分で見つけて…とか、あってナカナカ複雑な世界になっています。それが普通なので、よく理解しておきましょう。プロジェクトやソリューションのコピーの方法とか、配布の方法は、また別の記事で書くかもしれません。それまでは違うとこ(書籍やWebSite)で調べてください。
 +
 
 +
 
 +
: Win32アプリのウィザードは次のような画面遷移で作れます。よくわからないオプションのチェックボックスは今のところ無視しておきましょう。
 +
:*'''空のプロジェクト'''にチェックを入れると、自分でイチカラ作る感じなので、初心者には、結構大変です。チェックをいれなければ、いきなりコンパイル・リンク処理すれば、ウィンドウが立ち上がるレベルまで自動でプログラミングされた状態から始められます。デフォルトの設定を修正するよりも、自分で作った方がはえーというレベルにまで達したときに役立つことになるオプションです。
 +
:*'''MFC'''にチェックを入れるとMicrosoftFoundationClassという大きなクラスを利用してのプログラミングが出来ます。MFCを使いこなすのが得意になったら使えばいいと思います。あるいは、MFCプログラミング参考書をもっていて勉強する場合とか
 +
:*'''ATL'''にチェックを入れるとActiveTemplateLibraryを使ったプログラミングが始めやすい感じでプロジェクトが構成されます。StandardTemlateLibraryのマイクロソフト版と思っていただければよいかと思います。C++のテンプレートという概念を知らない人はまず、勉強しないとチェックを入れても無駄でしょう。勉強するときとかにチェックを入れてみると良いと思います。使いこなせる人で使いたい人はチェックを入れると良いでしょう。
 +
 
 +
:[[ファイル:20181024 Win32PrjNew1.png|600px|thumb|none|プロジェクトの新規作成Win32アプリ1]]
 +
 
 +
:[[ファイル:20181024 Win32PrjNew2.png|600px|thumb|none|プロジェクトの新規作成Win32アプリ2]]
 +
 
 +
 
 +
 
 +
: ちなみにコンソールアプリの場合は以下のような順番の画面になります。
 +
:[[ファイル:20181024 Win32CslNew1.png|600px|thumb|none|プロジェクトの新規作成Win32コンソールアプリ1]]
 +
 
 +
:[[ファイル:20181024 Win32ClsNew2.png|600px|thumb|none|プロジェクトの新規作成Win32コンソールアプリ2]]
 +
 
 +
: '''プリコンパイル済ヘッダーファイル'''ってのは、拡張子pchとつくファイルで、これを使って、コンパイル処理を速くするという仕組みです。普通はチェックを入れておきます。
 +
 
 +
 
 +
: '''Security Development Lifecycleチェック'''というのは、セキュアな関数だけを使っているかチェックするというもので、文字列操作関数なんかで準備されているxxxx_sという関数をちゃんと使って、文字数を指定して関数を利用してバッファをオーバーして文字列を代入するような関数の利用を禁止するためのチェックを行うということを意味しています。メモリの使い方をきちんと制限して文字列を代入するような仕組みにしているかチェックすることで予期せぬ、文字列代入によってシステムを悪用されるプログラムにならないことを目指すものです。
 +
 
 +
== '''プロジェクトのビルド''' ==
 +
: ビルドというのは、makefileというコンパイルからリンクまでの流れを記述したアプリケーション生成のための一連コマンドを記述したファイルを実行するようなことを意味していて、ビルドによってVisual Studioで指定した各種コンパイルオプションやリンカーオプションを適用しながらコンパイルとリンク処理がなされます。プロジェクトには複数のプロジェクト構成が含まれることがありまして、x64 64ビットアプリのReleaseバージョンであったりDebugバージョンであったり、x86 32ビットアプリのReleaseバージョンであったりDebugバージョンを構成しているもので、他にもソリューションに複数のプロジェクトがあれば、それらも一気にビルドしたりと、これらの複数の構成を一気にビルドするバッチビルドというものも存在しています。更新されたプログラムの差分だけをビルドによって生成するのが普通で、最初から全てをビルドする必要がある場合にはリビルドという作業を実施します。リビルドはビルドよりも時間がかかる作業になります。
 +
 
 +
:*'''ビルド'''
 +
:Ctrl+Shift+B もしくは メニューの「ビルド」-「ソリューションのビルド」で実行できます。
 +
 
 +
:*'''リビルド'''
 +
:メニューの「ビルド」-「ソリューションのリビルド」で実行できます。
 +
 
 +
:*'''バッチビルド'''
 +
:メニューの「ビルド」-「バッチビルド」でバッチビルド ダイアログが起動し、各構成アイテムのビルド欄のチェックボックスをONにしたものを対象に、ダイアログにあるビルド ボタンでビルドが、リビルド ボタンでリビルドができます。
 +
 
 +
== '''プロジェクトのデバッグ''' ==
 +
: 先の項目でプロジェクトの構成にはReleaseとかDebugとかっていうのがあると説明しましたが、Releaseは作成したプログラムを人に配布してとか、自分で実際に使うとかするときに、ビルドして作成するプログラムで、動作させるためだけに特化した、いたってスリムな構造のプログラム、いわば作られたプログラムを使用するにあたって最適化されたバイナリの状態のプログラムを出力するバージョンと言ってもよいと思います。DebugはReleaseの反対語みたいなもので、余計なものを含んだプログラムでして、余計なといってもプログラムが完成する前の段階で、動作に問題が起こらないかをチェックすることができる構造を含んでいると言ってよいと思います。プログラムのサイズも少し大きいです。何よりも動作の途中で、プログラムをとめて、その状態で各種変数にどういう内容が保持されているかをチェックしたり、Debug用にイミディエイトウィンドウとよばれる出力ウィンドウにどういう動作をしたかをテストプログラムの中で文字列として出力させる指定をして、どんな風に動いたかを知るための仕組みを保持しているバージョンになります。
 +
 
 +
 
 +
: Releaseバージョンとしてビルドするまでは、開発ではずっとデバッグバージョンで開発を進めることになりますので、基本はデバッグバージョンだけをビルドするという作業が多くなるはずです。ひとからもらったプログラムをビルドするだけの人なら、デバッグは一切しないかもしれませんが…。そういう人は、あんまり、ここには来ないと思います。
 +
 
 +
 
 +
: で、そのDebugバージョンのプロジェクトの構成を使っているとして、思ったところでプログラムをいったん止めて、変数の中身を確認するという作業をどうするか?そして、とめたあとにプログラムを1命令づつ動かして、どういう動きをしているかを追っていく方法とか、いわゆるデバッグ作業の方法を基本的な使い方の記事の項目として記述しておきたいと思います。デバッグは基本的なことっていうことです。あ、デバッグっていうのは、プログラムのバグ=不都合・虫をデ=取り除くという意味合いでして、プログラムのチェック作業自体をデバッグというようになっています。こんな僻地にたどりついた人は、知ってる人の方が多いかもしれませんが、念のため。
 +
 
 +
 
 +
'''<big><big>手順</big></big>'''
 +
:'''<big>1.</big>'''先の項目で実施した新規作成の自動で生成されたプログラムの中にはプロジェクト名に拡張子.cppという名前が付けられたファイルがあって、そのファイルの内容がメインのテキストエディタみたいなところで最初から開かれているはずでして、開かれていない場合は、割かし大変なので、カンで開いてください。いや、割かし難しいっすねイキナリデバッグから説明するってのは…でも、Visual Studioの各種ウィンドウの使い方とかの説明からやると退屈だと思うんです。カンでは開けないかもしれないので、開いていない場合は[[VC PlusPlus:Cppファイルの開き方]]に説明をかいておくので、開いてください。で、その135行目くらいに、下記の画像のような部分があるはずなので、このへんで、プログラムの動作を止めて、デバッグのなんたるかを勉強してみましょう。自分が指定した部分は、自動で作られたWin32アプリのメニューのバージョン情報ってのをアプリケーションを使うユーザがクリックしたときに実行される部分です。
 +
 
 +
 
 +
:[[ファイル:20181030 DebugBreakPoint.png|600px|thumb|none|BreakPointの位置選択]]
 +
 
 +
 
 +
:'''<big>2.</big>'''そしたら、この135行目、あるいは、Visual Studioのバージョンとかの違いで、少し行がずれているかもしれませんが、同じ部分にメモ帳とかで文字を編集する対象となるカーソルがある状態にして、この行をマウスでクリックしたり、この行の近くにあるカーソルを矢印キーとかで対象の行までもってきたりしましょう。そしてキーボードの[F9]を押しましょう!
 +
 
 +
 
 +
:すると…
 +
 
 +
 
 +
:[[ファイル:20181030 DebugBreakPointMark.png|600px|thumb|none|BreakPointのマーク]]
 +
 
 +
 
 +
:上記のように対象の行の横に赤い丸印がついたと思います。ここでプログラム止めます!の印です。キーボードの[F9]で止める場所として登録できましたが、他にもメニューの「デバッグ」-「ブレークポイントの設定/解除」を使ってもいいし、対象行の真上とか、対象行の文字を選択した状態で右クリックして表示されるコンテキストメニューの「ブレークポイントの設定/解除」でも同じ操作ができます。あるいは赤丸が表示されたところをクリックするだけでも同じことができたりとやり方が何通りもあります。ひとつの操作をするのにいろんなやり方があるせいでどんどん説明がながくなります。いやっす(汗。読んでる人も説明が長すぎていやっす(汗ってなったひともいると思います。ある程度、オーソドックスなやり方は網羅して説明しつつ、なので我慢して読みすすめてもらえるといろいろ理解できると思います。そしたら、次!
 +
 
 +
 
 +
:'''<big>3.</big>'''キーボードの[F5]キーを押しましょう。デバッグが開始されます。割かし時間がかかる人もいれば、すぐに以下の画面になった人もいると思います。
 +
 
 +
 
 +
:[[ファイル:20181030 Debug1.png|600px|thumb|none|デバッグ画面1]]
 +
 
 +
 
 +
: デバッグの開始もいろいろ操作方法がありまして、メニューの「デバッグ」-「デバッグの開始」を選択しても同じことです。あとはツールバーのコレをポチっと押したりしても同じです。
 +
 
 +
 
 +
:[[ファイル:20181030 DebugStart.png|600px|thumb|none|デバッグ開始ボタン]]
 +
 
 +
 
 +
:'''<big>4.</big>'''デバッグを開始しましたが、今のところはまだ、Win32アプリが動いただけです。ブレークポイントを設定した箇所は、このウィンドウでヘルプのバージョン情報を選択したときに呼び出されるコードに設定したからです。では、さっそく、「ヘルプ」-「バージョン情報」を選択しましょう。すると以下のような画面になり、設定した場所でプログラムが停止した感じになります。
 +
 
 +
 
 +
:[[ファイル:20181030 DebugWindowManupilate.png|600px|thumb|none|作成したアプリのヘルプ バージョン情報を選択]]
 +
 
 +
 
 +
:[[ファイル:20181030 Debug2.png|600px|thumb|none|デバッグ画面2]]
 +
 
 +
 
 +
: 赤い丸のブレークポイントの印の上に黄色い矢印が表示されていて、まさにこの行が処理されようとしていることを意味しています。この状態で、様々な変数の中身の情報を見ることができます。注目すべきはローカルウィンドウでしょう。現在の関数内で使われている変数の主要なものが自動でウォッチ(中身を覗くこと)ができていることです。この領域には、その下に沢山のタブがついていると思いますが、どれも中身を覗いたり状況を確認するのに便利なウィンドウがタブ形式でまとめられています。タブになっているものを別々のグループのタブにしたりと同時に表示させることもできます。そのあたりの細かい操作は、基本的な操作ではなくなるので、また別の記事に記述することにします。
 +
 
 +
 
 +
:[[ファイル:20181030 DebugLocalWindow.png|600px|thumb|none|デバッグ中に表示されるローカルウィンドウ]]
 +
 
 +
 
 +
:'''<big>5.</big>'''1行分の命令(実際にはセミコロンで区切られる命令の区切りごと)を実行するには、キーボードの[F10]キーを押しましょう。ステップオーバーと言います。今実行している関数が終わったところまで進む場合はキーボードの[Shift]+[F11]キーを押しましょう。ステップアウトと呼びます。今回の場合はWndProcというメッセージ関数の中でブレークポイントを設定しているので、ステップアウトすると、それ以上はプログラムを見ることはできないというようなメッセージが表示されると思います。そしたら、キーボードの[F5]キーを押して、Win32アプリが動作している状態にするしかないです。デバック中のF5は続行という意味ですので、次のブレークポイントまで進むか、Win32アプリがメッセージを受け取るのを待つかの状態まで進みます。現在の行が呼び出す関数の中身に移動するときはキーボードの[F11]キーを押しましょう。ステップインと呼ぶ動作になります。関数の中身がのぞける場合はその関数が記述されているファイルがエディタ画面で開いて、また一行づつ、命令を実行するか、命令の確認する方法を選択できます。ブレークポイントはプログラムの複数の場所に設定することができますので、確認したい場所にうまくブレークポイントを設定するのが、素早い動作確認をするコツにもなります。WndProcが何かということについてはW32プログラムの記事などでのプログラムの説明でWindowsアプリの仕組みを理解しないとダメだと思います。
 +
 
 +
 
 +
:基本的な使い方は以上になります。もっとデバッグの機能を活用する手順は基本的ではなくなってくるので、これも別の記事として記述したいと思います。
 +
 
 +
== '''プロジェクトの実行''' ==
 +
:'''<big>1.</big>'''キーボードの[Ctrl] + [F5]でデバッグなしで実行ができます。コンソールアプリ開発で、ブレークポイントを設定しない場合は、この方法で実行しないと実行結果を見ることはできません。この方法で実行すると、
 +
 
 +
 
 +
::'''続行するには何かキーを押してください . . .'''
 +
 
 +
 
 +
:というメッセージが表示されてコンソールが閉じないままになってくれます。
 +
 
 +
 
 +
 
 +
[[VC PlusPlus]]に戻る

2021年3月2日 (火) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス