このサイトに乗っている範囲でdxライブラリを使ったプログラミングを勉強しているため
私はWinMainに関してはあくまでおまじない程度の把握しかしていなく、
WinMain関数を自力で定義したり、WinAPI,DXライブラリのヘッダファイルの変更は一切しておりませんでした。
ちなみにこのエラーが起こり始めたのはメイン関数周辺でグローバルなキーボード入力の配列を定義したあたりからです。(そこまではコンパイル、実行は通っていた)
エラー 1 error LNK2005: _WinMain@16 は既に Main.obj で定義されています。
エラー 2 error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
/*----Main.cpp----*/
#include "DxLib.h"
#include "Keyboard.h"
#include"SceneMgr.h"
void message_box(){
int flag;
flag = MessageBox(
NULL,
TEXT("フルスクリーンモードで起動しますか?"),
TEXT("スクリーン設定"),
MB_YESNO | MB_ICONQUESTION);
if (flag == IDNO)
ChangeWindowMode(TRUE);
}
int count = 0;
void wait_fanc(){
int term;
static int t = 0;
term = GetNowCount() - t;
if (16 - term>0)
Sleep(16 - term);
t = GetNowCount();
return;
}
void fps(){
int i;
static int t = 0, ave = 0, f[60];
f[count % 60] = GetNowCount() - t;
t = GetNowCount();
if (count % 60 == 59){
ave = 0;
for (i = 0; i<60; i++)
ave += f[i];
ave /= 60;
}
if (ave != 0){
DrawFormatString(0, 430, GetColor(255, 255, 255), "%.1fFPS", 1000.0 / (double)ave);
}
return;
}
int Key[256];
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
message_box();
DxLib_Init();
SceneMgr_Initialize();
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0){
gpUpdateKey();
SceneMgr_Update();
SceneMgr_Draw();
count++;
fps();
}
SceneMgr_Finalize();
DxLib_End();
return 0;
}
/*SceneMgr.h*/
#pragma once
typedef enum{
eScene_Menu,//メニュー画面
eScene_Game,//ゲーム画面
eScene_Config,//設定画面
eScene_None,//何もなし
}eScene;
void SceneMgr_Initialize();//初期化
void SceneMgr_Finalize();//終了処理
//更新
void SceneMgr_Update();
//描画
void SceneMgr_Draw();
//nextScene にシーンを変更
void SceneMgr_ChangeScene(eScene nextScene);
/*-----Keyboard.h------*/
#pragma once
// キーの入力状態を更新する
void gpUpdateKey();
extern int Key[256]; // キーの入力状態格納用変数