外部シンボルが未解決とは

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

外部シンボルが未解決とは

#1

投稿記事 by ozawa252521 » 4ヶ月前

https://bituse.info/game/shot/9
こちらのサイトを参考にシュミレーションゲームを制作しようとしています

それで、敵を追加する項目でg_count;という拡張子が見当たらないとエラーが出てしまったでサイトをよく見ると

『まず、最初に説明しておかなければならないのは、変数g_countです。
これはゲームが開始してから何ループしたのかを表す変数です。
これはmain.cppでグローバル変数として定義し、define.hでextern宣言して共有できるようにしています。』

と説明されていたので
main.cpp に char g_count; と追加し
define.h に extern char g_count; と追加したところ見たことないエラーが出てしまい解決できません。
どなたか分かる方助けてほしいです。


エラーメッセージ

コード:

>------ ビルド開始: プロジェクト: gamegame, 構成: Release Win32 ------
1>back.cpp
1>control.cpp
1>enemy.cpp
1>main.cpp
1>pch.cpp
1>player.cpp
1>control.obj : error LNK2001: 外部シンボル "char g_count" (?g_count@@3DA) は未解決です
1>C:\Users\rikua\source\repos\gamegame\Release\gamegame.exe : fatal error LNK1120: 1 件の未解決の外部参照
1>プロジェクト "gamegame.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========



main.cpp

コード:

#include "pch.h"
#include "control.h"


//キー取得用配列
char key[256];
// 弾のカウント
char g_count;

// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);

	if (DxLib_Init() == -1)		// DXライブラリ初期化処理
	{
		return -1;			// エラーが起きたら直ちに終了
	}


	CONTROL* control = new CONTROL;



	while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll(key) == 0) {

		control->All();

	}


	



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

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



define.h

コード:

#include <windows.h>

//プレイヤーの歩くスピード
#define PLAYER_SPEED 5

#define MARGIN 10

//メッセージボックス
#define MSG(m) {\
	MessageBox(NULL,m,"メッセージ",MB_OK);}

//extern宣言してkey配列にどこからでもアクセスできるようにする
extern char key[256];
extern char g_count;
	


#pragma once

#define PSHOT_NUM 20
#define PSHOT_SPEED 14
struct SHOT {
	bool flag;//弾が発射中かどうか
	double x;//x座標
	double y;//y座標
	int gh;//グラフィックハンドル
	int width, height;//画像の幅と高さ
};




 

box
記事: 1760
登録日時: 10年前

Re: 外部シンボルが未解決とは

#2

投稿記事 by box » 4ヶ月前

control.cpp
を見せてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ozawa

Re: 外部シンボルが未解決とは

#3

投稿記事 by ozawa » 4ヶ月前

CONTROL::~CONTROL()
{
//プレイヤークラスの解放
delete player;



}

void CONTROL::All()
{

//描画領域を指定
SetDrawArea(MARGIN, MARGIN, MARGIN + 380, MARGIN + 460);

back->All();



player->All();


if (enemy != NULL) {
if (enemy->All()) {
delete enemy;
enemy = NULL;
}
}

++g_count;
}

ozawa

Re: 外部シンボルが未解決とは

#4

投稿記事 by ozawa » 4ヶ月前

すみません。こちらです

コード:

#include "pch.h"
#include "control.h"


CONTROL::CONTROL()
{
    //プレイヤークラスの生成
    player = new PLAYER;

	

    back = new BACK;

}

CONTROL::~CONTROL()
{
    //プレイヤークラスの解放
    delete player;


	
}

void CONTROL::All()
{

	//描画領域を指定
	SetDrawArea(MARGIN, MARGIN, MARGIN + 380, MARGIN + 460);

	back->All();



	player->All();


	if (enemy != NULL) {
		if (enemy->All()) {
			delete enemy;
			enemy = NULL;
		}
	}

	++g_count;
}


box
記事: 1760
登録日時: 10年前

Re: 外部シンボルが未解決とは

#5

投稿記事 by box » 4ヶ月前

control.cpp
で、
define.h
をインクルードしなくていいんですか?

ていうか、提示されたコードでは
pch.h

control.h
が初登場ですので、それらを見せてください。
関係しそうなファイルはすべてさらさないと、
いつまでたっても解決しないと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ozawa

Re: 外部シンボルが未解決とは

#6

投稿記事 by ozawa » 4ヶ月前

すみません。こちらです。
pch.h

コード:

//警告を消すための記述
#pragma warning(disable:4244)
#define _CRT_SECURE_NO_WARNINGS

//DXライブラリとdefine.hの取り込み
#include "DxLib.h"
#include "define.h"
control.h

コード:

#include "player.h"
#include "back.h"
#include "enemy.h"
class CONTROL {

	//プレイヤークラス
	PLAYER* player;

	//背景クラス
	BACK* back;

	ENEMY* enemy;
	
	
	

public:
	CONTROL();
	~CONTROL();
	void All();
};







返信

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