objcopyを使ったリソースの埋め込みについて
Posted: 2014年4月27日(日) 18:31
Win7環境で、gccとMinGWとSDL(libsdl)を使いプログラムを作っています。
件名にも、挙げた画像などリソースを実行ファイルに埋め込みたいのですが、うまくいかず書き込みをしました。
makefile
main.c
makefile内のRESOURCEにいる、chr.pngをmain.c側からアクセスしたいのですが、main.cの、8行、9行、10行と、16行を有効すると、
makeでundefined reference to `_binary_chr_png_start' 等のエラーが出ます。
お力添え、お願いします。
件名にも、挙げた画像などリソースを実行ファイルに埋め込みたいのですが、うまくいかず書き込みをしました。
makefile
CC = gcc
CFLAGS = -O2 -I./SDL/include
LIBS = -L./SDL/lib/x86 -lmingw32 -I/usr/include/w32api -mno-cygwin -mwindows
TARGET = ExamSDL02
OBJS = main.o
RESOURCE= chr.o
SDL = -lSDLmain -lSDL.dll -lSDL_image -lSDL_ttf -lSDL_gfx
all: $(TARGET) $(RESOURCE)
$(TARGET): $(OBJS)
$(CC) -o $(TARGET) -Wall -lm $(OBJS) $(LIBS) $(SDL)
$(RESOURCE):
objcopy -I binary -O elf32-i386 -B i386 chr.png chr.o
clean:
rm -f *.o
.c.o:
$(CC) $(CFLAGS) -c $<
#include <SDL.h>
#include <SDL_image.h>
extern char _binary_chr_png_start[];
extern char _binary_chr_png_end[];
extern char _binary_chr_png_size[];
//const char *start = _binary_chr_png_start; // データの先頭のアドレスを取得
//const char *end = _binary_chr_png_end; // データの末尾のアドレス + 1 を取得
//int size = (int)_binary_chr_png_size; // データのサイズを取得
int main( int argc, char* argv[] )
{
SDL_Init( SDL_INIT_EVERYTHING );
// printf( "Start:%d\n", &_binary_chr_png_start[0] );
SDL_Quit();
return 0;
}
makeでundefined reference to `_binary_chr_png_start' 等のエラーが出ます。
お力添え、お願いします。