我在Windows下用SDL2做了一个项目.

当我try 在Linux上编译它时,出现以下错误:

reilbas@reilbas:~/C/a/Labyrinthe-3D-main$ g++ -o test -I include src/*.cpp $(sdl2-config --cflags --libs)
src/Affichage.cpp: In member function ‘void Affichage::drawRect(float, float, float, float, SDL_Color&)’:
src/Affichage.cpp:110:17: error: ‘SDL_Vertex’ was not declared in this scope; did you mean ‘SDL_mutex’?
  110 |     std::vector<SDL_Vertex> triUi1 = {
      |                 ^~~~~~~~~~
      |                 SDL_mutex
src/Affichage.cpp:110:27: error: template argument 1 is invalid
  110 |     std::vector<SDL_Vertex> triUi1 = {
      |                           ^
src/Affichage.cpp:110:27: error: template argument 2 is invalid
src/Affichage.cpp:110:29: error: scalar object ‘triUi1’ requires one element in initializer
  110 |     std::vector<SDL_Vertex> triUi1 = {
      |                             ^~~~~~
src/Affichage.cpp:115:27: error: template argument 2 is invalid
  115 |     std::vector<SDL_Vertex> triUi2 = {
      |                           ^
src/Affichage.cpp:115:29: error: scalar object ‘triUi2’ requires one element in initializer
  115 |     std::vector<SDL_Vertex> triUi2 = {
      |                             ^~~~~~
src/Affichage.cpp:120:5: error: ‘SDL_RenderGeometry’ was not declared in this scope; did you mean ‘SDL_RenderCopy’?
  120 |     SDL_RenderGeometry(renderer, nullptr, triUi1.data(), triUi1.size(), nullptr, 0);
      |     ^~~~~~~~~~~~~~~~~~
      |     SDL_RenderCopy
src/Affichage.cpp: In member function ‘void Affichage::displayTri(std::vector<triangle>)’:
src/Affichage.cpp:146:21: error: ‘SDL_Vertex’ was not declared in this scope; did you mean ‘SDL_mutex’?
  146 |         std::vector<SDL_Vertex> verts = {
      |                     ^~~~~~~~~~
      |                     SDL_mutex
src/Affichage.cpp:146:31: error: template argument 1 is invalid
  146 |         std::vector<SDL_Vertex> verts = {
      |                               ^
src/Affichage.cpp:146:31: error: template argument 2 is invalid
src/Affichage.cpp:146:33: error: scalar object ‘verts’ requires one element in initializer
  146 |         std::vector<SDL_Vertex> verts = {
      |                                 ^~~~~
src/Affichage.cpp:151:9: error: ‘SDL_RenderGeometry’ was not declared in this scope; did you mean ‘SDL_RenderCopy’?
  151 |         SDL_RenderGeometry( renderer, nullptr, verts.data(), verts.size(), nullptr, 0);
      |         ^~~~~~~~~~~~~~~~~~
      |         SDL_RenderCopy
src/AllMath.cpp: In static member function ‘static int AllMath::triangleClipAgainstPlane(vec3d, vec3d, triangle&, triangle&, triangle&)’:
src/AllMath.cpp:254:1: warning: control reaches end of non-void function [-Wreturn-type]
  254 | }
      | ^

我使用APT安装了SDL2:

$ sudo apt-get install libsdl2

推荐答案

SDL_RenderGeometry()&A;朋友were introduced in SDL 2.0.18:

  • 添加了SDL_RenderGeometryRaw()和SDL_RenderGeometryRaw(),以允许使用SDL 2D渲染API渲染任意形状

因此,请确保您使用的是该版本或更高版本.

SDL2.0.18是在2021年底发布的,所以像Ubuntu 20.04这样的发行版ship older versions of SDL不会有那些新的功能.

Linux相关问答推荐

IntelliJ(PyCharm)不再识别Linux中的AltGr快捷键

仅使用Find搜索32字符长的目录

Shell 脚本程序 - 从日志(log)文件中过滤磁盘空间利用率超过 80% 的行

在正在运行的进程的输出周围添加自定义字符串

匹配模式和提取

在 bash 脚本中保持两个进程处于活动状态(并在死亡时重生它们)

重新运行时避免 Linux bash 脚本中的文件重命名重复

如何在 gcc 搜索路径上防止多个版本的 Boost?

如何使用 sed 和 awk 命令提取模式?

如何在vim中使用正则表达式来切换文件中所有字符的大小写

如何使用 Bash 将随机数据块写入文件

在 SLURM 作业(job)脚本中设置和传递字符串变量

如何在 linux ElementaryOS 中修复 Genymotion,但未找到错误CXXABI_1.3.8

如何在不包括可用空间的情况下创建光盘(sd 卡)的 .IMG 映像?

如何在 Linux 中创建高分辨率计时器来测量程序性能?

如何下载较旧的 google play 服务?

Mac OS X 中的 ldconfig 等效项?

Ant 找不到 javac,在 Ubuntu 上不会设置 JAVA_HOME

在 reverse-i-search (Ctrl+R ) , 历史上类似命令之间切换的任何方法

通过 linux x86-64 函数调用保留了哪些寄存器