2016-01-23 59 views
0

使用SDL2库启动窗口并在黑色背景上绘制彩色正方形时,我毫不犹豫。但是,当我尝试使用SDL2_gfx库以画圆的filledCircleColor()是未定义:为什么我不能调用这个SDL2_gfxPrimitives函数?

make build; 
make[1]: Entering directory `/home/mike/compile/sdlTest' 
gcc -std=c99 -c sdlTest.c; 
gcc sdlTest.o -o sdlTest -I/usr/include/SDL2 -lSDL2; 
sdlTest.o: In function `main': 
sdlTest.c:(.text+0x176): undefined reference to `filledCircleColor' 
collect2: error: ld returned 1 exit status 
make[1]: *** [build] Error 1 
make[1]: Leaving directory `/home/mike/compile/sdlTest' 
make: *** [test] Error 2 

我在做什么错?

这里是我的C:

#include <stdio.h> 
#include <SDL2/SDL.h> 
#include <SDL2/SDL2_gfxPrimitives.h> 


SDL_Event event; 

//SDL2 variables 
void* nullptr; 
SDL_Window *win; 
SDL_Renderer *ren; 

int main(void) { 
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { 
     printf("SDL_Init Error: %s\n", SDL_GetError()); 
    } 

    win = SDL_CreateWindow("sdlTest", 100, 100, 10*32, 10*32, SDL_WINDOW_SHOWN); 
    if (win == nullptr) { 
     printf("SDL_CreateWindow Error: %s\n", SDL_GetError()); 
    } 

    ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); 
    if (ren == nullptr) { 
     printf("SDL_CreateRenderer Error: %s\n", SDL_GetError()); 
    } 

    SDL_SetRenderDrawColor(ren, 0, 0, 0, 255); 
    SDL_RenderClear(ren); 


    SDL_Rect rect; 
    rect.x = 20; 
    rect.y = 20; 
    rect.w = 10; 
    rect.h = 10; 

    SDL_SetRenderDrawColor(ren, 0, 0, 255, 255); 
    SDL_RenderFillRect(ren, &rect); 


    filledCircleColor(ren, 50, 50, 50, 0xFF0000FF); 

    SDL_RenderPresent(ren); 

    while(1) { ; } 
} 

这里是我的Makefile:

test: 
    make build; 
    make run; 

build: 
    gcc -std=c99 -c sdlTest.c; 
    gcc sdlTest.o -o sdlTest -I/usr/include/SDL2 -lSDL2; 

run: 
    ./sdlTest; 

clean: 
    -rm sdlTest; 
    -rm *.o; 
    -rm *~ 

我在Linux中。谢谢您的帮助!

+0

也许链接-lSDL_gfx?不知道,但看起来像你不链接图书馆 – Evers

回答

2

你需要告诉链接,您正在使用SDL2_gfx扩展加入-lSDL2_gfx选项:

gcc sdlTest.o -o sdlTest -lSDL2 -lSDL2_gfx; 

注意-I标志是多余这里,因为你是在联动阶段。

+0

谢谢,这固定了它。 –

相关问题