未找到适用于 MinGW 的 SDL
SDL Not Being Found For MinGW
我一辈子都弄不明白哪里出了问题。我已经按照这里的教程进行操作: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 放在我的 file/executable 目录中。
我正在使用以下编译:
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/
但是,这返回了多个错误。
我已经找到解决这个问题的方法了。我将所有相关的 SDL and/or 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 目录时它不会编译。
你用的g++好像不是你复制SDL库文件的那个。另一个程序可能已经安装了自己的 MinGW 并为其设置了系统路径(例如,Perl 使用 MinGW 来编译模块)。您可以通过以下方式找到答案:
where g++
要解决此问题,您可以更改系统路径(需要重新打开 shell)或重命名未使用的 MinGW 文件夹。
我一辈子都弄不明白哪里出了问题。我已经按照这里的教程进行操作: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
我也将 SDL.dll 放在我的 file/executable 目录中。
我正在使用以下编译:
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/
但是,这返回了多个错误。
我已经找到解决这个问题的方法了。我将所有相关的 SDL and/or 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 目录时它不会编译。
你用的g++好像不是你复制SDL库文件的那个。另一个程序可能已经安装了自己的 MinGW 并为其设置了系统路径(例如,Perl 使用 MinGW 来编译模块)。您可以通过以下方式找到答案:
where g++
要解决此问题,您可以更改系统路径(需要重新打开 shell)或重命名未使用的 MinGW 文件夹。