【问题标题】:how to load images in sdl to a surface in c using IMG_Load?如何使用 IMG_Load 将 sdl 中的图像加载到 c 中的表面?
【发布时间】:2021-06-07 11:19:02
【问题描述】:

当我跑步时

SDL_Surface* surface  = IMG_Load("*image location*");

弹出一个错误提示

从 'int' 初始化 'SDL_Surface *' {aka 'struct SDL_Surface *'} 使指针从整数不进行强制转换 [-Wint-conversion]

我不知道为什么会这样,因为 IMG_load 不应该返回一个指针

https://www.libsdl.org/projects/SDL_image/docs/SDL_image_11.html

这是剩下的代码

#include <stdio.h>
#include <windows.h>

#include <SDL2\SDL.h>

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    int result = SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Window *window = SDL_CreateWindow("bruh",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,500,500,0);
    SDL_Renderer *rend  =  SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    SDL_Surface* surface  = IMG_Load("*image location*");
    SDL_Texture* texture = SDL_CreateTextureFromSurface(rend,surface);
    SDL_FreeSurface(surface);
    SDL_RenderClear(rend);
    SDL_RenderCopy(rend,texture,NULL,NULL);
    SDL_RenderPresent(rend);
    SDL_Delay(5000);
    SDL_DestroyTexture(texture);
    SDL_DestroyRenderer(rend);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0; 
}

我该如何解决这个错误?

【问题讨论】:

  • 警告:我对 SDL 的了解为零。注意:你看过this sample吗?
  • @fpiette 我不懂 C++。有什么问题?
  • 错误消息说IMG_Load返回一个int,你把它分配给SDL_Surface*。一种可能性是您对 ÌMG_Load 的定义有误。在您拥有的标题中搜索它。
  • @sababugs112 C 和 C++ 是一样的,除了 C++ 有额外的 OOP 特性和更大的标准库,还有一些东西。当知道 C/C++ 的人说他/她不认识另一个人时,我感到非常震惊。了解其他语言需要多长时间超过 5 分钟?
  • @SmGreatC C 和 C++ 是完全不同的语言。许多 C 程序是无效的 C++ 程序,反之亦然。他们有着 40 年前的共同历史,但仅此而已。 (事实上​​,上面的 sababugs112 代码是错误的,但 C 是有效的,而 C++ 是无效的)。

标签: c sdl sdl-image


【解决方案1】:

IMG_Load 属于单独的库 SDL_image。这个函数是declared in SDL_image.h,你没有包含它。添加该包含并与适当的库链接。在 C 中,通过隐式声明允许未声明的函数,并且隐式声明的函数返回 int,这就是您的错误的来源。

Sane 编译器会发出关于隐式声明的警告。警告是有原因的,请阅读它们,除非您完全确定,否则不要隐藏警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多