【问题标题】:Can't load .bmp SDL2 IMG_LoadTexture无法加载 .bmp SDL2 IMG_LoadTexture
【发布时间】:2016-09-13 18:44:10
【问题描述】:

所以我一直在关注this 教程,一切都很顺利,但我遇到了一个问题,即我无法加载 .bmp。

#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;
}

当我尝试编译代码(在 Code::Blocks 中)时,它给了我

的错误

对“IMG_LoadTexture”的未定义引用

好吧,我尝试将IMG_LoadTexture(renderer, "grass.bmp"); 更改为IMG_LoadTexture(renderer, "/the/full/path/of/grass.bmp");,但这也不起作用。同样的错误。我是不是写错了什么,或者漏掉了一部分?此外,grass.bmp 与 main.cpp(上面的代码)位于同一文件夹中。

【问题讨论】:

标签: c++ sdl codeblocks sdl-2


【解决方案1】:

这里的错误是说你已经声明了一个函数但没有定义它-undefined reference

这很可能是因为您忘记链接库 SDL_image 到哪个函数 IMG_LoadTexture 所属。

【讨论】:

  • 我有 SDL_image.h,不是那个吗?
  • @Kimple 不,它只是一个标头,您需要在 Xcode 中使用类似二进制的框架
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2020-11-04
  • 2020-04-16
相关资源
最近更新 更多