extern宣言とMakefile
Posted: 2010年1月22日(金) 22:25
ソースファイルが長くなってきたために、extern宣言を使って分割コンパイルをしようと考えました。今までは分割しないで書いてきたのですが、限界に達しました(汗) 試しに、短いプログラムでコンパイルしたのですが、エラーが出ます。誰か助言をお願いします。ちなみにDXPです。
main.cpp内
#include <pspkernel.h>
#include "dxlibp.h"
#include "GV.h"
PSP_MODULE_INFO("DX LIB TEST", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
extern void graph_main();
void main(){
DxLib_Init();
SetDrawBlendMode(DX_BLENDMODE_ALPHA,255);
SetGraphMode(480,272,16);
while(ProcessMessage() != -1){
ClearDrawScreen();
graph_main();
ScreenFlip();
stage_count++;
}
DxLib_End();
}
GV.h内
//グローバル変数
int Key[12];//keyの設定
int stage_count;//カウンタ
int img_board[40];//ボード
int img_ch[12];//キャラクター
graph.h内
#include "dxlibp.h"
#include "function.h"
void graph_main(){
//描写内容
}
function.h内
//グローバル変数
extern int Key[12];//keyの設定
extern int stage_count;//カウンタ
extern int img_board[40];//ボード
extern int img_ch[12];//キャラクター
Makefile内
TARGET = TestProject
OBJS = test.o
OBJS += graph.o
INCDIR =
CFLAGS = -O3 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS =
LIBS = dxlibp.a -lpspaudiolib -lpspaudio -lpspmpeg -lpspaudiocodec -lpspgu -lpng -lz -lm -lpspvalloc -lpsppower -lpsprtc -lpspgum -lpspjpeg#DXライブラリPortable使用時に追加
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Title
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
all:
@rm -f *.o
@rm -f *.elf
@rm -f *.BAK
@rm -f *.SFO
エラー内容
undefined reference to `graph_main'
main.cpp内
#include <pspkernel.h>
#include "dxlibp.h"
#include "GV.h"
PSP_MODULE_INFO("DX LIB TEST", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
extern void graph_main();
void main(){
DxLib_Init();
SetDrawBlendMode(DX_BLENDMODE_ALPHA,255);
SetGraphMode(480,272,16);
while(ProcessMessage() != -1){
ClearDrawScreen();
graph_main();
ScreenFlip();
stage_count++;
}
DxLib_End();
}
GV.h内
//グローバル変数
int Key[12];//keyの設定
int stage_count;//カウンタ
int img_board[40];//ボード
int img_ch[12];//キャラクター
graph.h内
#include "dxlibp.h"
#include "function.h"
void graph_main(){
//描写内容
}
function.h内
//グローバル変数
extern int Key[12];//keyの設定
extern int stage_count;//カウンタ
extern int img_board[40];//ボード
extern int img_ch[12];//キャラクター
Makefile内
TARGET = TestProject
OBJS = test.o
OBJS += graph.o
INCDIR =
CFLAGS = -O3 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS =
LIBS = dxlibp.a -lpspaudiolib -lpspaudio -lpspmpeg -lpspaudiocodec -lpspgu -lpng -lz -lm -lpspvalloc -lpsppower -lpsprtc -lpspgum -lpspjpeg#DXライブラリPortable使用時に追加
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Title
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
all:
@rm -f *.o
@rm -f *.elf
@rm -f *.BAK
@rm -f *.SFO
エラー内容
undefined reference to `graph_main'