SDL2 导出到 linux
SDL2 Exporting to linux
我使用 SDL2 在 MSVC 上编写了我的应用程序,
在将它导出到 linux 时,我遇到了很多 problems.I 解决了大部分问题,除了这个
我不知道该怎么办?任何人都知道发生了什么事?
编译器是使用 C++14 标准的 GCC。
曲面定义为:
SDL_Surface* textSurface = TTF_RenderText_Blended(font->getFont(), p_Text.c_str(), { p_Color.r,p_Color.g, p_Color.b, p_Color.a });
m_Texture = SDL_CreateTextureFromSurface(ENGINE->getRenderer(), textSurface);
Segmentation fault
表示您正在尝试读取(或写入)您不拥有的内存。所以那段代码中的指针之一:
surface->map->info.r
不好。
检查您是否正确地为 surface
和 map
数据结构分配了 space,并且它们的 space 在使用前没有被取消分配。否则,指针本身可能已损坏。
Linux 上有一个很棒的内存调试工具,名为 valgrind
。 运行 使用您的程序,并使用输出更新您的问题。
好吧,我解决了安装错误的 SDL2 库的问题:
使用了这些:
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-ttf-dev
我使用 SDL2 在 MSVC 上编写了我的应用程序,
在将它导出到 linux 时,我遇到了很多 problems.I 解决了大部分问题,除了这个
我不知道该怎么办?任何人都知道发生了什么事? 编译器是使用 C++14 标准的 GCC。
曲面定义为:
SDL_Surface* textSurface = TTF_RenderText_Blended(font->getFont(), p_Text.c_str(), { p_Color.r,p_Color.g, p_Color.b, p_Color.a });
m_Texture = SDL_CreateTextureFromSurface(ENGINE->getRenderer(), textSurface);
Segmentation fault
表示您正在尝试读取(或写入)您不拥有的内存。所以那段代码中的指针之一:
surface->map->info.r
不好。
检查您是否正确地为 surface
和 map
数据结构分配了 space,并且它们的 space 在使用前没有被取消分配。否则,指针本身可能已损坏。
Linux 上有一个很棒的内存调试工具,名为 valgrind
。 运行 使用您的程序,并使用输出更新您的问题。
好吧,我解决了安装错误的 SDL2 库的问题: 使用了这些:
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-ttf-dev