没有为 MinGW 找到 SDL

Posted

技术标签:

【中文标题】没有为 MinGW 找到 SDL【英文标题】:SDL Not Being Found For MinGW 【发布时间】:2017-08-20 04:14:46 【问题描述】:

我终其一生都无法弄清楚哪里出了问题。我已经按照这里的教程进行操作:http://lazyfoo.net/SDL_tutorials/lesson01/windows/mingw/index.php

我无法让 g++ 编译。我收到以下错误:

testgame.c:1:21: fatal error: SDL/SDL.h: No such file or directory
 #include "SDL/SDL.h"

这是文件中的代码:

#include "SDL/SDL.h"

int main( int argc, char* args[] )

    //Start SDL
    SDL_Init( SDL_INIT_EVERYTHING );

    //Quit SDL
    SDL_Quit();

    return 0;    

目录:

C:\MinGW\include\ - 这是我放置带有 *.h 文件的 SDL 文件夹的位置

C:\MinGW\lib\ - 这是我为 SDL 放置所有 lib 文件的地方

我还将 SDL.dll 放在我的文件/可执行目录中。

我正在使用以下编译:

g++ -o testgame.exe testgame.c -lmingw32 -lSDLmain -lSDL

我不知道我做错了什么。我已经搜索了所有内容,到目前为止没有任何效果。请帮忙!

谢谢, 特拉维斯

更新:

将包含语句更改为:

#include "C:/MinGW/include/SDL/SDL.h"

修复了最初的错误,但现在我收到了:

C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDLmain
C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL
collect2.exe: error: ld returned 1 exit status

@cat 建议如下:

g++ -o testgame.exe testgame.c -lmingw32 -L.SDLmain -lSDL

然而这返回了这个错误:

C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL

@vonaka 建议:

g++ -o testgame.exe testgame.c -lmingw32 -LC:/MinGW/lib/

但是,这会返回多个错误。

【问题讨论】:

尝试添加 -L。 (大写 L 点)在您的 -lSDLmain 之前 请注意,SDL1 是旧的。你应该学习 SDL2。 lazyfoo.net/tutorials/SDL/index.php @cat 我已经尝试了这两个建议,但仍然收到并且仍然收到不同的错误。我会和他们一起更新问题。 @HolyBlackCat 我也尝试过 SDL2。我切换到 SDL1 尝试让它工作。 【参考方案1】:

我已经想出了如何解决这个问题。我将所有相关的 SDL 和/或 SDL2 文件放入 C:\ 中名为 mingw_dev_lib 的单独文件夹中。然后我明确说明了这个新目录中的 lib 文件夹和 include 文件夹的路径:

gcc testgame.c -IC:\mingw_dev_lib\include\SDL2 -LC:\mingw_dev_lib\lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o testgame.exe

经过这些步骤编译成功。奇怪的是,当尝试访问这些文件和标准 C:\MinGW 目录时它不会编译。

【讨论】:

【参考方案2】:

您使用的 g++ 似乎不是您复制 SDL 库文件的那个。可能是另一个程序安装了自己的 MinGW 并为其设置了系统路径(例如 Perl 使用 MinGW 编译模块)。您可以通过以下方式找到:

where g++

要解决此问题,您可以更改系统路径(需要重新打开 shell)或重命名未使用的 MinGW 文件夹。

【讨论】:

以上是关于没有为 MinGW 找到 SDL的主要内容,如果未能解决你的问题,请参考以下文章

在 MinGW 中设置 SDL

devcpp怎么安装SDL2。。?

SDL2 库的静态链接

CodeBlocks16.01 MinGW32位 配置SDL2.0.4

使用 MinGW 在 Windows 上安装 SDL 失败 - dvec.h 错误

SDL2 未定义对 MinGW 的几个函数的引用