我使用SDL2在MSVC上编写了我的应用程序, 在将其导出到linux时,我遇到了很多问题。我解决了大多数问题,除了这个
我不知道该怎么办?任何人都知道发生了什么事吗? 编译器是使用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);
答案 0 :(得分:1)
Segmentation fault
表示您正在尝试读取(或写入)您不拥有的内存。因此,这段代码中的一个指针:
surface->map->info.r
不好。
检查是否已为surface
和map
数据结构正确分配了空间,并且在使用前还没有对其空间进行过分配。否则,指针本身可能已损坏。
在Linux上有一个很棒的内存调试工具,名为valgrind
。用您的程序运行它,然后用输出更新您的问题。
答案 1 :(得分:0)
我解决了我安装错误的SDL2库的问题: 使用了这些:
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-ttf-dev