VECTOR変数を他のファイルで使用できるよう定義

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

VECTOR変数を他のファイルで使用できるよう定義

#1

投稿記事 by ほりでい » 4年前

超本格!サンプルで覚ええるC言語 3Dゲーム プログラミング教室のモデルデータを使い、DXライブラリで3Dゲームを作ろうと思っているのですが

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2005 "void __cdecl Control_Action(void)" (?Control_Action@@YAXXZ) は既に Action_Control.obj で定義されています。 GameProg C:\Users\sekai\Desktop\3Dプログラミング\test.obj 1


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK2005 "struct DxLib::tagVECTOR pos" (?pos@@3UtagVECTOR@DxLib@@A) は既に Action_Control.obj で定義されています。 GameProg C:\Users\sekai\Desktop\3Dプログラミング\test.obj 1

上のようなエラーが出てしまいます。ネットを使い調べたのですが、あまり情報がなく、わかりませんでした。
分かる方がいれば、教えてください<(_ _)>

コード:

/*test.cpp*/

#define GLOBAL_INSTANCE
#include "GV.h"
#include "Action_Control.cpp"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE);	
    
	if (DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;
	
	SetGraphMode(1200, 800, 32);	

	Load_Main();	
	
	if (model == -1)return-1;



	while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen() && !Get_Key()) {
		DrawBox(0, 0, 1200, 800, GetColor(255, 255, 255), TRUE);					

		Control_Action();
																	
		MV1DrawModel(model);
																
		if (Key[KEY_INPUT_UP])pos.z += 4.0f;
		if (Key[KEY_INPUT_DOWN])pos.z -= 4.0f;
		if (Key[KEY_INPUT_RIGHT])pos.x += 4.0f;
		if (Key[KEY_INPUT_LEFT])pos.x -= 4.0f;

		if (CheckHitKey(KEY_INPUT_RETURN)) {
			break;
		}
	}

	//WaitKey();																    
	
	DxLib_End();									
}								

コード:

/*Load.cpp*/

//素材ロード
void Load_Main() {
	model = MV1LoadModel("3Dモデル//Player//PC.mv1");			//モデルの読み込み 戻り値int型のモデルハンドル
}

//キーボード入力
int Get_Key() {
	char tmpKey[256];

	GetHitKeyStateAll(tmpKey);
	for (int i = 0; i < 256; i++) {
		Key[i]++;

		if (tmpKey[i] != 0) {
			Key[i]++;
		}
		else {
			Key[i] = 0;
		}
	}

	return 0;
}

コード:

/*Action_Control.cpp*/

#include "GV.h"

extern VECTOR pos = VGet(600.0f, 300.0f, -400.0f);
void Control_Action() {
	MV1SetPosition(model, pos);
}
[/coke]
/*GV.h*/

[code]
#pragma once
#include "DxLib.h"
#include <stdio.h>

#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif

#include "function.h"

//変数定義
GLOBAL int model;
GLOBAL char Key[256];

コード:

/*function.h*/

#pragma once

//関数定義
GLOBAL void Load_Main();
GLOBAL void Control_Action();
GLOBAL int Get_Key(

アバター
あたっしゅ
記事: 663
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: VECTOR変数を他のファイルで使用できるよう定義

#2

投稿記事 by あたっしゅ » 4年前

ビルドしてないですが、

/*test.cpp*/



#include "Action_Control.cpp"

は、

#include "function.h"

の間違いではないですか ?
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

ほりでい
記事: 15
登録日時: 4年前

Re: VECTOR変数を他のファイルで使用できるよう定義

#3

投稿記事 by ほりでい » 4年前

返信ありがとうございます。(人''▽`)
extern宣言の際に代入を同時に行っていたのでエラーが出てしまっていました。
/*GV.h*/でextern宣言し/*test.cpp*/でインクルードするといった形でうまくいきました
ありがとうございました<(_ _)>

返信

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