1

g++ を使用して、SDL でプログラムをコンパイルしようとしています。

このプログラムは、次のように 2 つの SDL テスト行を含む main.cpp ファイルのみです。

#include "SDL/SDL.h"

using namespace std;

int main(void) {
    SDL_Init(SDL_INIT_EVERYTHING);

    SDL_Quit();

    return 0;
}

しかし、私の問題は、SDL ライブラリに関するエラーが発生することです。

まず、C++11 について学べるように MinGW32 をインストールしたので、GCC のバージョンを尋ねると、version 4.7.0.

SDL-devel-1.2.15-mingw32.tar.gz次に、SDL Web サイトからファイルをダウンロードし、フォルダをデスクトップに展開しました。

その後、すべてのヘッダー ファイルを から にコピーし/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 ファイルのコンパイル元と同じディレクトリにコピーしました。

すべてを正しくセットアップしたと思いますが、コンパイルしようとした方法に基づいて、2 つの異なるメッセージが表示されます。

まず、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

誰かが私が間違っていることを見ることができますか?

コマンドをどこから実行したかによって 2 つの異なるメッセージが表示されるのはなぜですか? また、これを修正するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

1 に答える 1

5

私は自分の問題を解決したようです。

Windows コマンド プロンプトでエラーが発生したのは、SDL がmain()関数に正しい署名を必要とするように見えるため、次のように変更したためです。

int main(void) {

に:

int main(int argc, char *argv[]) {

これにより、コマンドプロンプトから問題なくコンパイルできました。

その後、Sublime Text 2 エラーは、ビルド システム ファイルの書き方に問題があることが判明しました。

-lフラグを個別の値に分割する必要がありました。

以前は、フラグを次のように記述していました。

"-lmingw32 -lSDLmain -lSDL -mwindows"

しかし、これを次のように変更する必要がありました。

"-lmingw32", "-lSDLmain", "-lSDL", "-mwindows"

これで、F7 を押して Sublime Text 2 からビルドできるようになりました。

于 2012-07-08T02:57:57.777 に答える