2016-04-25 13 views
0

私のコンパイラは次のエラーを与えるが見つかりませんメインクラス)エクスターナル変数

#include <stdio.h> 
#include <dirent.h> 
#include "Graphics.h" 
#include "Fonts/Font.h" 
int main(int argc, char* argv[]) 
{ 
    int i; 
    Color c; 
    GRAP_Init(); 
    c.RGB = 0xB69C; 
    GRAP_DrawString(20, 20, &Ariel_32, &path, c); 
    return 0; 
} 

私はフォントの魔女という名前のサブフォルダが含まれている、Font.h

#ifndef GLOBAL_FONT_H_ 
#define GLOBAL_FONT_H_ 

typedef struct 
{ 
    unsigned char width;   //width of this specific character 
    unsigned char height;   //height of this specific character 

}Size; 

typedef struct 
{ 
    Size size;      //Actual space needed for this symbol 
    unsigned char *data;   //First instance of array 

}Symbol; 

typedef struct 
{ 
    Size size;      //Maximum size that the symbols take 
    unsigned char firstChar;  //first character 
    unsigned char symbolSize;  //size of symbol 
    unsigned char symbolCount;  //number of symbols 

}FontHeader; 

typedef struct 
{ 
    FontHeader header; 
    Symbol *symbols; 

}Font; 

extern Font Ariel_32; 
#endif 

そしてそれはまたAriel_32.c

含まれてい
#include "Font.h" 

#define _firstChar  0x20    //First character 
#define _maxWidth  0x2D    //Max width in px 
#define _maxHeight  0x29    //Max height in px 
#define _symbolSize  0x00F6    //Bytes needed per symbol 
#define _symbolCount 0x5F    //How many symbol in this font 
#define _symbolFile  "Ariel_32.sym"  //Symbol file witch contains the character data 


static struct 
{ 
    Size size; 
    unsigned char data[_symbolSize]; 
} 
const fontsym[_symbolCount] = 
{ 
    #include _symbolFile 
}; 

Font Ariel_32 = 
{ 
    {{_maxWidth,_maxHeight},_firstChar,_symbolSize,_symbolCount}, //Font header 
    fontsym 
}; 

編集: 私は誰かがelsesを使った人についての手がかりがないので、私はここにメイクファイルを置くことにします。

program_NAME := movie 
program_C_SRCS := $(wildcard *.c) 
program_CXX_SRCS := $(wildcard *.cpp) 
program_C_OBJS := ${program_C_SRCS:.c=.o} 
program_CXX_OBJS := ${program_CXX_SRCS:.cpp=.o} 
program_OBJS := $(program_C_OBJS) $(program_CXX_OBJS) 
program_INCLUDE_DIRS := 
program_LIBRARY_DIRS := 
program_LIBRARIES := 

CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir)) 
LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir)) 
LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library)) 

.PHONY: all clean distclean 

all: $(program_NAME) 

$(program_NAME): $(program_OBJS) 
    $(LINK.cc) $(program_OBJS) -o $(program_NAME) 

clean: 
    @- $(RM) $(program_NAME) 
    @- $(RM) $(program_OBJS) 

distclean: clean 
+2

あなたは 'Ariel_32.o'とリンクしましたか? – Barmar

+0

私はあなたがmakefileに頼ると思う、魔女は私の元のポストに追加されました。 – Bas

+0

'Ariel_32.c'はサブフォルダにあります。 makefileは 'Fonts'サブフォルダへの参照を含んでいません。 – Barmar

答えて

0

を(私は本当に:)時間があまりにもその部分を把握見つける必要があります)あなたは、Cソース変数にFontsサブディレクトリを含める必要があります。

program_C_SRCS := $(wildcard *.c) $(wildcard Fonts/*.c) 

次に、サブディレクトリ内のフォントファイルをコンパイルし、プログラムにリンクします。