|
分類:[C/C++]
LNK1120 1 件の未解決の外部参照 LNK2001 外部シンボル ""int __cdecl IsAKeyTrigger(int)" (?IsAKeyTrigger@@YAHH@Z)" は未解決です。 LNK2019 未解決の外部シンボル "int __cdecl IsAKeyTrigger(int)" (?IsAKeyTrigger@@YAHH@Z) が関数 "void __cdecl GameMain(void)" (?GameMain@@YAXXZ) で参照されました。 とエラーが出ます。
main.cpp #include "DxLib.h" #include "gamemain.h" #include "main.h" //グローバル変数 //時間計測用変数 int g_lasttime = 0; //直前の計測時間 float g_frametime = 0; //1ループにかかった時間 int g_timerstart; //タイマー用変数 GameState g_gamestate = GAME_TITLE; int g_gametitleimg; //タイトルイメージ int g_heroimg; //画像 float g_hx = 0, g_hy = 0; //座標 BOOL g_akey_prev; //直前のAボタンの状態 int g_middlefont; //中サイズフォントハンドル int g_largefont; //大サイズフォントハンドル int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); //ウィンドウモードにする SetGraphMode(800, 600, 32); //ウィンドウサイズを変更する if (DxLib_Init() == -1) return -1; // DXライブラリ初期化 //画像の読み込み g_gametitleimg = LoadGraph("media\\smp1_title.png"); g_heroimg = LoadGraph("media\\smp1_chara01.png"); g_middlefont = CreateFontToHandle("メイリオ", 42, -1, DX_FONTTYPE_ANTIALIASING); g_largefont = CreateFontToHandle("メイリオ", 90, -1, DX_FONTTYPE_ANTIALIASING); SetDrawScreen(DX_SCREEN_BACK); //ウラ画面を描画対象にする g_lasttime = GetNowCount() & INT_MAX; //現在時刻の記録 while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { //1ループにかかった時間を計測 int curtime = GetNowCount(); g_frametime = (float)(curtime - g_lasttime) / 1000.0f; g_lasttime = curtime; ClearDrawScreen(); //画面消去 //画面描画関数に切り替え switch (g_gamestate) { case GAME_TITLE: DrawGameTitle(); break; case GAME_MAIN: DrawGameMain(); break; case GAME_CLEAR: DrawGameClear(); break; case GAME_OVER: DrawGameOver(); break; default: break; } ScreenFlip(); } WaitKey(); //待機 DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 } //タイトル画面描画 void DrawGameTitle() { DrawBox(0, 0, 800, 600, GetColor(255, 255, 255), TRUE); DrawGraph(0, 0, g_gametitleimg, TRUE); //テキスト表示 DrawStringToHandle(100, 400, "Zキーでゲームスタート", GetColor(255, 0, 255), g_middlefont); DrawStringToHandle(100, 460, "カーソルキーで上下左右に移動", GetColor(0, 0, 0), g_middlefont); //キーをチェックして画面を切り替え int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (IsAKeyTrigger(key) == TRUE) g_gamestate = GAME_MAIN; } //ゲーム本編描画 void DrawGameMain(){ GameMain(); } //ゲームクリア画面描画 void DrawGameClear() { } //ゲームオーバー画面描画 void DrawGameOver() { //テキスト表示 DrawStringToHandle(100, 200, "ゲームオーバー", GetColor(255, 0, 0), g_largefont); //5秒経ったらタイトル画面へ if (g_lasttime - g_timerstart > 5000) g_gamestate = GAME_TITLE; }
main.h #ifndef __MAIN_H__ #define __MAIN_H__ #include <DxLib.h> #include "gamemain.h" //グローバル変数 //時間計測用変数 extern int g_lasttime; //直前の計測時間 extern float g_frametime; //1ループにかかった時間 extern int g_timerstart; //タイマー用変数 enum GameState {GAME_TITLE, GAME_MAIN, GAME_CLEAR, GAME_OVER}; extern GameState g_gamestate; extern int g_gametitleimg; //タイトルイメージ extern int g_heroimg; //画像 extern float g_hx, g_hy; //座標 extern BOOL g_akey_prev; //直前のAボタンの状態 extern int g_middlefont; //中サイズフォントハンドル extern int g_largefont; //大サイズフォントハンドル //関数プロトタイプ宣言 void DrawGameTitle(); void DrawGameMain(); void DrawGameClear(); void DrawGameOver(); BOOL IsAKeyTrigger(int key); #endif
gamemain.cpp #include "gamemain.h" #include "main.h" void GameMain() { //自キャラ移動 int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); float mv = 80.0f * g_frametime; //移動量計算 if (key & PAD_INPUT_UP) g_hy -= mv; if (key & PAD_INPUT_DOWN) g_hy += mv; if (key & PAD_INPUT_LEFT) g_hx -= mv; if (key & PAD_INPUT_RIGHT) g_hx += mv; DrawGraph(g_hx, g_hy, g_heroimg, TRUE); //画像の表示 //Zキーをチェックして画面を切り替え if (IsAKeyTrigger(key) == TRUE) { g_gamestate = GAME_OVER; g_timerstart = g_lasttime; //タイマーセット } }
gamemain.h #ifndef __GAMEMAIN_H__ #define __GAMEMAIN_H__ #include <DxLib.h> #include "main.h" void GameMain(); #endif
|