メイン cpp で単純なヘッダー ファイルを使用しようとしていますが、コンパイラでエラーが発生し続けます。ヘッダー ファイルに入れたいコードがヘッダー ファイルにある場合、エラーが発生します。ヘッダー ファイルにコードがなく、ヘッダー ファイルに入れたいコードがメインの cpp にある場合、コンパイラはエラーを生成しません。ヘッダー ファイルがメインと同じ場所にあることを確認しました。はい、ゲームの作成に Allegro を使用しているので、デバッグ ライブラリをリンクするようにしました。そのすべてが処理されます。
これが私のコードです:
main.cpp (ヘッダー ファイルに入れたいコードなし):
#include <iostream>
#include <allegro5\allegro5.h>
#include <allegro5\allegro_primitives.h>
#include <fstream>
#include "Globals.h"
using namespace std;
int main()
{
ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_EVENT_QUEUE *event_queue = NULL;
ALLEGRO_TIMER *timer = NULL;
if(!al_init())
{
if(errorFile.is_open())
errorFile << "Allegro failed to initialize.";
return -1;
}
display = al_create_display(WINDOW_WIDTH, WINDOW_HEIGHT);
if(!display)
{
if(errorFile.is_open())
errorFile << "ALLEGRO_DISPLAY failed to initialize.";
return -1;
}
if(errorFile.bad())
{
cout << "errorFile is bad";
}
al_init_primitives_addon();
al_install_keyboard();
event_queue = al_create_event_queue();
timer = al_create_timer(1.0 / 60);
al_register_event_source(event_queue, al_get_keyboard_event_source());
al_register_event_source(event_queue, al_get_timer_event_source(timer));
al_register_event_source(event_queue, al_get_display_event_source(display));
al_start_timer(timer);
while(!done)
{
ALLEGRO_EVENT ev;
al_wait_for_event(event_queue, &ev);
if(ev.type == ALLEGRO_EVENT_TIMER)
{
if(ev.timer.source == timer)
{
}
}
if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
{
done = true;
}
if(ev.type == ALLEGRO_EVENT_KEY_DOWN)
{
switch(ev.keyboard.keycode)
{
case ALLEGRO_KEY_ESCAPE:
done = true;
break;
}
}
if(ev.type == ALLEGRO_EVENT_KEY_UP)
{
switch(ev.keyboard.keycode)
{
case ALLEGRO_KEY_ESCAPE:
done = true;
break;
}
}
if(redraw && al_is_event_queue_empty(event_queue))
{
al_flip_display();
al_clear_to_color(al_map_rgb(0,0,0));
}
}
al_destroy_display(display);
al_destroy_event_queue(event_queue);
al_destroy_timer(timer);
errorFile.close();
return 0;
}
そして、ここに目的のコードを含むヘッダー ファイル「Globals.h」があります。
#include <iostream>
#include <fstream>
const int WINDOW_WIDTH = 600;
const int WINDOW_HEIGHT = 600;
bool done = true;
bool redraw = true;
enum KEYS {UP,DOWN,LEFT,RIGHT};
bool keys[4] = {false,false,false,false};
ofstream errorFile ("errorFile.txt", ios::trunc);
お早めにどうぞ!