我一直在尝试使用 g++ 来编译带有 SDL 的程序。
该程序只是一个 main.cpp 文件,其中包含两个 SDL 测试行,如下所示:
#include "SDL/SDL.h"
using namespace std;
int main(void) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Quit();
return 0;
}
但我的问题是我收到与 SDL 库有关的错误。
首先我安装了 MinGW32 以便我可以了解 C++11,所以当我问 GCC 是什么版本时,它说它是version 4.7.0
.
然后我SDL-devel-1.2.15-mingw32.tar.gz
从 SDL 网站下载了文件并将文件夹解压缩到桌面。
之后,我将所有头文件从复制/SDL-1.2.15/include/SDL
到C:/MinGW/include/SDL
然后我将文件/SDL-1.2.15/lib
夹中的 3 个文件复制到C:/MinGW/lib folder
他们是:
libSDL.dll.a
libSDL.la
libSDLmain.a
最后,我将SDL.dll
文件从 bin 目录复制到将编译 .exe 文件的同一目录。
我想我已经正确设置了所有内容,但是根据我尝试编译它的方式,我得到了两条不同的消息。
首先,我尝试使用 Sublime Text 2 编辑器中的构建系统功能对其进行编译。
这是我告诉 Sublime Text 2 运行的命令:
"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "-lmingw32 -lSDLmain -lSDL -mwindows"]
当我运行它时,我收到错误消息:
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/ld.exe: cannot find lmingw32 -lSDLmain -lSDL -mwindows
collect2.exe: error: ld returned 1 exit status
[Finished in 0.3s with exit code 1]
所以我然后尝试直接从命令提示符编译。
我将目录更改为与 main.cpp 相同的目录并运行以下命令:
g++ main.cpp -o main.exe -lmingw32 -lSDLmain -lSDL -mwindows
并收到以下错误消息:
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../libSDLmain.a(SDL_win32_main.o): In function `console_main':
/Users/slouken/release/SDL/SDL-1.2.15/./src/main/win32/SDL_win32_main.c:315: undefined reference to `_SDL_main'
collect2.exe: error: ld returned 1 exit status
谁能看到我做错了什么?
为什么我会收到两条不同的消息,具体取决于我从哪里运行命令,我该如何解决这个问题?
任何帮助,将不胜感激。