如何从Linux编译到SDL2应用程序到Windows?

How to compile to SDL2 application to Windows from Linux?

本文关键字:SDL2 应用程序 Windows 编译 Linux      更新时间:2023-10-16

所以最近我在Windows 10上下载了Linux子系统,使用Ubuntu。

我可以使用g++命令将 SDL2 应用程序编译到 Linux,但每当我尝试使用此命令i686-w64-mingw32-g++执行此操作时,我都会收到一条错误消息,说main.cpp:5:9: fatal error: SDL2/SDL.h: No such file or directory.

我正在使用的命令是i686-w64-mingw32-g++ main.cpp -w -lSDL2 -o main.exe.

https://i.stack.imgur.com/TlZmQ.jpg

有人知道如何解决这个问题吗?:(

[编辑]

所以现在我尝试使用以下命令指定必要文件的目录:g++ main.cpp -I/usr/include/SDL -L/usr/lib/x86_64-linux-gnu -w -Wall -Wextra -std=c++17 -lSDL2 -o main

这有效,但是当我将其与 mingw 一起使用时,它不会i686-w64-mingw32-g++ main.cpp -I/usr/include/SDL -L/usr/lib/x86_64-linux-gnu -w -Wall -Wextra -std=c++17 -lSDL2 -o main

https://i.stack.imgur.com/OfCRt.jpg

您需要在命令行中包含 SDL 包含目录的路径。 但是,您需要包含 mingw32 的下载SDL 的路径,而不是/usr/include/SDL2。 区别在于/usr/include/SDL2 中的标头适用于 Linux,/usr/lib 中的 lib 也适用于 Linux,但您需要链接到 Windows 库。

我通常做的是下载 Mingw32 的开发库并将它们直接放入我的项目目录中。 然后,您需要做的就是将 -ISDL2-2.0.8/i686-w64-mingw32/include -LSDL2-2.0.8/i686-w64-mingw32/lib添加到您的命令行,它将能够找到所需的标头和库。 最后,确保将SDL2-2.0.8/i686-w64-mingw32/bin/SDL2.dll复制到 Makefile 中的可执行文件目录中。

另外,请记住链接 SDLmain。 它处理为您创建 WinMain 以及所有这些,然后调用您的 main 函数。