2016-05-17 89 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