分割コンパイルの間違いを指摘してください><

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
naponapo
記事: 38
登録日時: 11年前

分割コンパイルの間違いを指摘してください><

#1

投稿記事 by naponapo » 11年前

DxLibで分割コンパイルというものを初めて学びました
そこで、簡単なファイルで試してみようと思ったのですが、次のヘッダーファイルがmainファイルにincludeできなくて困っています
基本的な間違いかもしれないですが、どうしなければいけなかったのか指摘して欲しいです

コード:

 //mark.cppファイル
#include <DxLib.h>

char key[256];
void gpKeyStateAll(){   //全てのキー情報を得る
	   char a[256];
	   GetHitKeyStateAll(a);
	   for(int i=0;i<256;i++){
	     if(a[i]==1)
			 key[i]++;
		 else
			 key[i]=0;
	   
	   };


}
void motion(char *p,int *x,int *y){  //文字を四方向に動かす
	gpKeyStateAll();
	if(key[KEY_INPUT_RIGHT]==1){
	    *x+=128;
	}
	if(key[KEY_INPUT_LEFT]==1){
	    *x-=128;
	}
	if(key[KEY_INPUT_UP]==1){
	    *y-=128;
	}
	if(key[KEY_INPUT_DOWN]==1){
	    *y+=128;
	}
}  

コード:

// プロトタイプ宣言 mark.hファイル
#ifndef mark
#define mark
static char *p;
static int *x;
static int *y;
void gpKeyStateAll();

void motion(char *p,int *x,int *y);

#endif  

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルの間違いを指摘してください><

#2

投稿記事 by softya(ソフト屋) » 11年前

#includeされていない様ですよ。
#include "mark.h"
を書かないといけません。
あとstaticな変数は何の意味があるのでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 分割コンパイルの間違いを指摘してください><

#3

投稿記事 by みけCAT » 11年前

naponapo さんが書きました:次のヘッダーファイルがmainファイルにincludeできなくて困っています
エラーメッセージが出る場合、それを貼り付けてください。(ユーザー名などの個人情報の漏洩に気をつけてください)
著作権や業務上の秘密などの問題がなければ、mainファイルも提示していただけるとわかりやすくなってありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

naponapo
記事: 38
登録日時: 11年前

Re: 分割コンパイルの間違いを指摘してください><

#4

投稿記事 by naponapo » 11年前

すみません><
そもそもmainでincludeした時点でそこにエラーが出るものですから
mainのファイルは貼ってませんでした
includeができないので(製作途中なので)、宣言した関数を使っていないのですが
こんな感じです
みけcatさん注意ありがとうございます
エラーを貼るときは気をつけます

コード:

//test.cppファイル(メイン)
#include <DxLib.h>
#include<mark.h>
 int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen( DX_SCREEN_BACK );
		
		int color=GetColor(255,255,255);
		
		SetFontSize(128);
		
		while(ProcessMessage()==0){
		   DrawFormatString(0,0,color,"*");
		
		   ScreenFlip();
		   ClearDrawScreen();
		
		}; 
エラー;1>test.cpp(2): fatal error C1083: include ファイルを開けません。'mark.h': No such file or directory

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルの間違いを指摘してください><

#5

投稿記事 by softya(ソフト屋) » 11年前

#include<mark.h>
ではなく
#include "mark.h"
です。
ライブラリのヘッダではありませんので。
<>と""の違いを勉強して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

naponapo
記事: 38
登録日時: 11年前

Re: 分割コンパイルの間違いを指摘してください><

#6

投稿記事 by naponapo » 11年前

ありがとうございます 解決しました
ライブラリのヘッダは<>で自作のヘッダは””で囲むのですね
勉強になりました
おかげさまで先に進めます
回答してくださったみなさん本当にありがとうございました

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルの間違いを指摘してください><

#7

投稿記事 by softya(ソフト屋) » 11年前

これ大丈夫ですか?
> あとstaticな変数は何の意味があるのでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

naponapo
記事: 38
登録日時: 11年前

Re: 分割コンパイルの間違いを指摘してください><

#8

投稿記事 by naponapo » 11年前

この場合は、ほかの mark.h 内の関数に 宣言した変数は使用されてないのでstaticはつけなくてよかったですかね
理解が甘かったです

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 分割コンパイルの間違いを指摘してください><

#9

投稿記事 by みけCAT » 11年前

naponapo さんが書きました:この場合は、ほかの mark.h 内の関数に 宣言した変数は使用されてないのでstaticはつけなくてよかったですかね
理解が甘かったです
このままstaticだけを外すと、多重宣言でエラーが発生するはずです。
代わりに「別のもの」をつければ大丈夫です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 分割コンパイルの間違いを指摘してください><

#10

投稿記事 by softya(ソフト屋) » 11年前

引数なので、まったく必要がないんじゃないでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る