2016-05-17 116 views
0

所以我正在關注this教程,並且所有內容都非常流暢和華麗,直到遇到問題,即我無法加載.bmp。無法加載.bmp SDL2 IMG_LoadTexture

#include <SDL2/SDL.h> 
#include <SDL2/SDL_image.h> 
#include <stdio.h> 
#include <iostream> 
#include <SDL2/SDL_main.h> 

using namespace std; 



int main(int argc, char* argv[]) { 

bool quit = false; 

SDL_Init(SDL_INIT_VIDEO); 

SDL_Window* window; 

window = SDL_CreateWindow("window", 100, 100, 1280, 720, SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE); 

if(window == NULL){ 

    cout << "Disn't work, here is why: " << SDL_GetError()<< endl; 
    return 0; 
} 


SDL_Renderer* renderer = NULL; 

renderer= SDL_CreateRenderer(window, -1 ,SDL_RENDERER_ACCELERATED); 

SDL_Event* mainEvent = new SDL_Event(); 

SDL_Texture* grass_image = NULL; 
grass_image = IMG_LoadTexture(renderer, "grass.bmp"); 

SDL_Rect grass_rect; 
grass_rect.x = 10; 
grass_rect.y = 50; 
grass_rect.w = 250; 
grass_rect.h = 250; 

while(!quit && mainEvent->type != SDL_QUIT){ 
    SDL_PollEvent(mainEvent); 
    SDL_RenderClear(renderer); 

    SDL_RenderCopy(renderer, grass_image, NULL, &grass_rect); 

    SDL_RenderPresent(renderer); 

} 

SDL_DestroyWindow(window); 
SDL_DestroyRenderer(renderer); 
delete mainEvent; 

return 0; 
} 

當我嘗試編譯代碼(代碼::塊),它給我的

錯誤未定義參考 「IMG_LoadTexture」

好吧,我試着將IMG_LoadTexture(renderer, "grass.bmp");更改爲IMG_LoadTexture(renderer, "/the/full/path/of/grass.bmp");,但這也不起作用。同樣的錯誤。我寫錯了什麼,或錯過了一些部分?另外,grass.bmp與main.cpp位於同一個文件夾中(上面的代碼)。

+0

可能重複[什麼是未定義的引用/無法解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) – genpfault

回答

0

這裏的錯誤表明你已經聲明瞭一個函數,但沒有定義它 - undefined reference

很可能是因爲您忘記鏈接到庫SDL_image而導致功能IMG_LoadTexture所屬的問題。

+0

我已經包含了SDL_image.h,是不是那個? – Kimple

+0

@Kimple不,它只是一個頭文件,你需要Xcode中的二進制類似框架 – teivaz