【发布时间】: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++ 是无效的)。