4

SDL 2.0 で簡単な例をコンパイルすると、コマンド SDL_CreateWindow の後で、次のエラーが発生しました:「NULL ミューテックスを渡しました」。

静的ライブラリ プロジェクトを使用しています。また、OSX 10.8.3 でテストしています。

これは、コマンド ラインのコンパイルで何か不足していることを通知しますか?

以下は、プログラム生成とコード例を生成するためのコマンド ラインです。

コンパイラ:

clang++ -I "TestSDL/sdl/include" -Wall -c -x c++ -arch x86_64 -std=c++11 -stdlib=libc++ -MMD -MP -MF"src/main.d" -MT"src/main.d" -o "src/main.o" "../src/main.cpp"

リンカ:

clang++ -L "TestSDL/sdl/lib" -arch x86_64 -stdlib=libc++ -Bstatic -framework GLUT -framework ForceFeedBack -framework IOKit -framework CoreAudio -framework CoreFoundation -framework Carbon -framework AudioUnit -framework AudioToolbox -framework OpenGL -framework Cocoa -o "TestSDL" ./src/main.o -lSDL2

コード:

#include "SDL.h"
#include <iostream>

using namespace std;

void checkSDLError(int line = -1)
{
    const char *error = SDL_GetError();

    if (*error != '\0') {
        cout << "SDL Error: " << error << " line: " << line << endl;
        SDL_ClearError();
    }
}

int main(int argc, char **argv)
{
    if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
        return false;
    }

    SDL_Window * window = SDL_CreateWindow("Test SDL", SDL_WINDOWPOS_CENTERED,
            SDL_WINDOWPOS_CENTERED, 512, 512,
            SDL_WINDOW_SHOWN);
    checkSDLError(__LINE__);

    if (!window) {
        cout << "Unable to create window" << endl;
        return 1;
    }

    SDL_Event event;
    while (true) {
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
                case SDL_QUIT:
                    return 1;

                default:
                    break;
            }
        }
    }

    SDL_DestroyWindow(window);
    SDL_Quit();
}
4

2 に答える 2

1

リスト (SDL http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org ) との会話で、phpBoing が報告したのと同じ方法で通知を受けました。最近、この問題についていくつかの報告がありましたが、この問題が発生しないように調整が行われました ( http://hg.libsdl.org/SDL/rev/f8e3dcefed59 )。

ありがとうございます。

于 2013-04-20T00:21:47.243 に答える