ページ 11

VS2010 C++ PCH警告

Posted: 2012年5月24日(木) 23:22
by 無双贄
VS2010を入れたので鬼ごっこゲームでも作っているのですが、Player.hにクラスの定義を書くと

「1 IntelliSense: PCH 警告: ヘッダーの停止はファイル スコープが対象ではありません。Intellisense PCH ファイルは生成されませんでした。」

というエラーが出てしまいmain.cppでヘッダファイルをインクルードしても

「1 IntelliSense: ソース ファイルを開けません 」

というエラーを出しました。
このようなエラーは初めてでネットで検索してもあまり解決策にはならないようなものばかりでした。
何か解決策を知っているのなら教えていただけないでしょうか?
よろしくお願いします。

以下ソースコード

コード:

//Player.h

class player
{
private:
	//プレイヤーに関する変数宣言
	int P_Handle;//プレイヤー画像の格納
	int P_HandSizeX, P_HandleSizeY;//プレイヤー画像のサイズの格納
	int PlayerX;//プレイヤーのX座標
	int PlayerY;//プレイヤーのY座標

public:
	void P_Initialize();//初期化処理(画像の読み込み等々)
	void P_Draw();//描画処理
	void P_Operation();//操作処理

}

コード:

//Player.cpp

#include "DxLib.h"
#include "Player.h"

void player::P_Initialize()//初期化処理
{
	P_Handle = LoadGraph("画像/鬼.bmp", TRUE);//自機画像の取得
	GetGraphSize(P_Handle, &P_HandSizeX, &P_HandleSizeY);//画像サイズの取得(当たり判定処理に使用)
	PlayerX = 150; PlayerY = 150;	//自機の初期座標を設定
}

void player::P_Draw()//描画処理
{
	DrawGraph(PlayerX, PlayerY, P_Handle, TRUE);
}

void player::P_Operation()//操作処理
{
	if(CheckHitKey(KEY_INPUT_W))
	{
		PlayerY -= 3;
	}
	if(CheckHitKey(KEY_INPUT_S))
	{
		PlayerY += 3;
	}
	if(CheckHitKey(KEY_INPUT_A))
	{
		PlayerX -= 3;
	}
	if(CheckHitKey(KEY_INPUT_D))
	{
		PlayerX += 3;
	}
}

コード:

//main.cpp

#include "DxLib.h"
#include <Player.h>


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

		player Player;	//オブジェクトの生成

		Player.P_Initialize();


        // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア )
		//毎フレームの処理が必要なときはこっちに書く
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 )
		{
			Player.P_Operation();

			Player.P_Draw();
			
        }
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}  

Re: VS2010 C++ PCH警告

Posted: 2012年5月24日(木) 23:49
by トントン
とりあえず、パッと見だけですけど
1.
class playerの閉じ括弧の後に「;」が付いていないです。

2.
#include <Player.h>

Re: VS2010 C++ PCH警告

Posted: 2012年5月25日(金) 00:30
by softya(ソフト屋)
プリコンパイル済みヘッダ関連だと思いますのでプロパティでプリコンパイル済みヘッダが無効になっていることを確認して下さい。

Re: VS2010 C++ PCH警告

Posted: 2012年5月25日(金) 21:49
by 無双贄
お二人とも回答ありがとうございます。
トントンさんのご指摘通りclass定義のあとのセミコロンとPlayer.cpp main.cppのインクルードを#include<Player.h>ではなく#include"Player.h"に直してみたところ
無事エラーを吐かずにコンパイルできました。
ソースコードを載せておきます。

コード:

//Player.h

#ifndef PLAYER_H
#define PLAYER_H
class player
{
private:
	//プレイヤーに関する変数宣言
	int P_Handle;//プレイヤー画像の格納
	int P_HandSizeX, P_HandleSizeY;//プレイヤー画像のサイズの格納
	int PlayerX;//プレイヤーのX座標
	int PlayerY;//プレイヤーのY座標

public:
	void P_Initialize();//初期化処理(画像の読み込み等々)
	void P_Draw();//描画処理
	void P_Operation();//操作処理

};

#endif

コード:

//Player.cpp

#include "DxLib.h"
#include "Player.h"

void player::P_Initialize()//初期化処理
{
	P_Handle = LoadGraph("画像/鬼.bmp", TRUE);//自機画像の取得
	GetGraphSize(P_Handle, &P_HandSizeX, &P_HandleSizeY);//画像サイズの取得(当たり判定処理に使用)
	PlayerX = 150; PlayerY = 150;	//自機の初期座標を設定
}

void player::P_Draw()//描画処理
{
	DrawGraph(PlayerX, PlayerY, P_Handle, TRUE);
}

void player::P_Operation()//操作処理
{
	if(CheckHitKey(KEY_INPUT_W))
	{
		PlayerY -= 3;
	}
	if(CheckHitKey(KEY_INPUT_S))
	{
		PlayerY += 3;
	}
	if(CheckHitKey(KEY_INPUT_A))
	{
		PlayerX -= 3;
	}
	if(CheckHitKey(KEY_INPUT_D))
	{
		PlayerX += 3;
	}
}

コード:

//main.cpp

/*
	タイトル:鬼ごっこゲーム

	内容:鬼(自機)が逃走者を追い詰めて捕まえるゲーム

	仕様:鬼が逃走者のある範囲内に入ると逃走者が鬼と同じ方向に逃げる。
		  もちろん画面外には出ない処理をする。
   	  鬼が逃走者に触れるとゲームクリア。

	必要な処理:鬼が範囲内に入ったかどうかの判定処理
	  		逃走者が鬼と同じ進行方向に動く処理
	 		   画面外に出ない処理
	  		触れたかどうかの判定処理
*/

#include "DxLib.h"
#include "Player.h"


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

		player Player;	//オブジェクトの生成

		Player.P_Initialize();


        // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア )
		//毎フレームの処理が必要なときはこっちに書く
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 )
		{
			Player.P_Operation();

			Player.P_Draw();
			
        }
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
}