2016-01-23 61 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

謝謝,這固定了它。 –

相關問題