没有为MinGW找到SDL

时间:2017-08-20 04:14:46

标签: c compiler-errors sdl mingw32

我不能为我的生活弄清楚出了什么问题。我已按照此处的教程进行操作: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\ - 这是我将SDL文件夹放在* .h文件

的位置

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

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

我使用以下内容编译:

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

我不知道我做错了什么。我到处搜索过,到目前为止还没有任何工作。请帮忙!

谢谢, 特拉维斯

更新

将include语句更改为:

#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/

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

2 个答案:

答案 0 :(得分:0)

我已经弄清楚如何解决这个问题。我将所有相关的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目录时无法编译,但这很奇怪。

答案 1 :(得分:0)

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

where g++

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