ページ 11

ファイルの分割

Posted: 2011年7月15日(金) 22:06
by akaneima
ファイルの分割がどうやってもできないので質問しました。

環境はC言語でVC2008です。

コード:

//Main.cpp
#include<stdio.h>
#include<stdlib.h>
#include "DxLib.h"
#include "CharaData.h"

int Key[256];
int Color = GetColor( 255, 255, 255 ); //基本(黒) 

int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
	char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
	// 画面モードの設定
	
	Load_Graph();

	if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
 
	while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
		//↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない

	CharaMove();
		


	ScreenFlip();
 }   
 
    DxLib_End();
    return 0;
}



//CharaMove.cpp
#include<stdio.h>
#include<stdlib.h>
#include "DxLib.h"

//キャラ移動
void CharaMove(){
	
	if( CheckHitKey(KEY_INPUT_RIGHT) == TRUE ){
	
	}
}



//ImageDivision.cpp
#include "DxLib.h"
#include "CharaData.h"

//キャラクター画像の読み込み

void Load_Graph(){

R_jikiimage = LoadGraph( "media/jiki_a.png");

}



//TRUE FALSE判定
#define TRUE	1
#define FALSE	0

//インクルードガード??出来てる・・・??
#ifndef CHARADATA_H
#define CHARADATA_H

//主人公データ
 struct Chara{
	int flag;		//主人公のフラグ
	int hp;			//主人公のHP
	int power;		//主人公の攻撃力
	double x;		//主人公の位置X
	double y;		//主人公の位置Y
	double vx;		//主人公の移動量X
	double vy;		//主人公の移動量Y
};

//自キャラデータ
extern Chara Chara;

//画像ハンドル
extern int R_jikiimage=0;	//主人公の画像 この=0は省略できますか?

void Load_Graph();
void CharaMove();

#endif 

これで実行すると

"int R_jikiimage" (?R_jikiimage@@3HA) は既に Main.obj で定義されています。
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

このエラーはつまり、複数箇所でヘッダファイルが読み込まれているよ! っていうことですよね?
なので、ImageDivision.cpp でincludeしてある#include "CharaData.h"を消して実行してみました。
すると、今度は

'R_jikiimage' : 定義されていない識別子です。

とエラーが出ます。

どうすれば解決するでしょうか?

Re: ファイルの分割

Posted: 2011年7月15日(金) 22:10
by みけCAT
このあたりを参考にしてみてください。
http://dixq.net/rp/5.html

Re: ファイルの分割

Posted: 2011年7月15日(金) 22:14
by box
CharaData.h
が、どこからどこまでなのかがよくわかりません。

Re: ファイルの分割

Posted: 2011年7月16日(土) 16:35
by akaneima
皆様ありがとうございます。
何とかか解決しました。
extern int とメインファイルで int で宣言と定義をしないといけなかったのですね!