Visual Studio 2022 のファイル分割について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
もんの

Visual Studio 2022 のファイル分割について

#1

投稿記事 by もんの » 2年前

初質問させていただきます。自分はC++を学習し始めて半年程の初心者です。
最近、ゲームを作ろうと、DxライブラリとVisual Studioを使い始めました。
今回、画像がウィンドウ内を左右に行ったり来たりするコードをかきました。main.cppに全て書いてデバッグした時には上手く表示されました。しかし、ファイル分割をすると画像は表示されず、真っ黒なウィンドウしか表示されません。ファイル分割の方法が間違っているか、コードに足りない点があると思うのですが、どこを間違えているのか自分だけでは分からず、お手上げ状態です。エラーメッセージはありません。以下、そのコードです。

[main.cpp]

コード:

#include "DxLib.h"
#include "TIKAWA.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);

	SetGraphMode(800, 600, 32);

	// 描画先画面を裏画面にする
	SetDrawScreen(DX_SCREEN_BACK);

	
	if (DxLib_Init() == -1) return -1;  // DXライブラリ初期化処理

	void TIKAWA_Initialize();  // ロードする

	
	while (1)
	{
		
		// 画面に描かれているものをすべて消す
		ClearDrawScreen();  

		void TIKAWA_Draw(); //描画する

		void TIKAWA_Update(); //動きを計算する

        // 裏画面の内容を表画面に反映させる
		ScreenFlip();

		// 待たないと処理が早すぎるのでここで20ミリ秒待つ
		WaitTimer(20);

		// Windows システムからくる情報を処理する
		if (ProcessMessage() == -1) break;

		// ESCキーが押されたらループから抜ける
		if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) break;
	}

	// DXライブラリ使用の終了処理
	DxLib_End();

	// ソフトの終了
	return 0;
}

[TIKAWA.h]

コード:

#ifndef DEF_TIKAWA_H //二重include防止

#define DEF_TIKAWA_H


// ロードする
void TIKAWA_Initialize();
 
// 描画する
void TIKAWA_Draw();

// 動きを計算する
void TIKAWA_Update();

#endif 
[TIKAWA.cpp]

コード:

#include "DxLib.h"
#include "TIKAWA.h"


// このファイル内でしか使えないグローバル変数
 static int m_TGraph; //画像ハンドル
 static int m_Tx = 0;     
 static int m_Ty = 0;
 static int m_TMuki = 1;

// ロードする
void TIKAWA_Initialize() {
    m_TGraph = LoadGraph("ちいかわ.png");
}

// 描画する
void TIKAWA_Draw() {
DrawRotaGraph(m_Tx, m_Ty + 35, 0.2, 0.0, m_TGraph, TRUE);  
	    }

// 動きを計算する
void TIKAWA_Update() {
	if (m_TMuki == 1) m_Tx += 5;
	if (m_TMuki == 0) m_Tx -= 5;


	// ちいかわが画面右端からでそうになっていたら画面内の座標に戻してあげ、移動する方向も反転する
	if (m_Tx > 782)
	{
		m_Tx = 782;
		m_TMuki = 0;
	}

	// ちいかわが画面左端からでそうになっていたら画面内の座標に戻してあげ、移動する方向も反転する
	if (m_Tx < 38)
	{
		m_Tx = 38;
		m_TMuki = 1;
	}
}

main.cppにすべて書いた時には画像は表示されたので、画像名は間違えていないと思います。
OSはWindows11です。
初歩的な質問ですが、画像が表示されない原因について、助言をいただきたいです。よろしくお願いします。
長文失礼しました。

アバター
usao
記事: 1889
登録日時: 11年前

Re: Visual Studio 2022 のファイル分割について

#2

投稿記事 by usao » 2年前

main関数内に書いてある

> void TIKAWA_Initialize(); // ロードする

という記述では関数呼び出しになっていない.(関数の宣言になってる)
他の関数についても同様.

つまり,分割コンパイルの問題ではなくて,単純に関数呼び出しの文法に関する問題.

アバター
usao
記事: 1889
登録日時: 11年前

Re: Visual Studio 2022 のファイル分割について

#3

投稿記事 by usao » 2年前

コード:

//こんな関数があったとして…
void F(){  printf( "F" );  }

int main()
{
  void F();  //関数F()を呼ぶための記述はこうじゃねぇよな,っていう.
  F();  //こうだよね.
  return 0;
}

もんの

Re: Visual Studio 2022 のファイル分割について

#4

投稿記事 by もんの » 2年前

気づいていませんでした。
usaoさん ありがとうございました。

返信

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