Когда я компилирую простой пример с 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"
Linker:
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();
}
Вы делаете это неправильно.
Вам следует только вызовите checkSDLError () если окно == NULL.
http://wiki.libsdl.org/moin.fcg/SDL_CreateWindow
Возвращает окно, которое было создано или NULL при ошибке; вызовите SDL_GetError () для получения дополнительной информации.
В разговоре со списком (SDL http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org), Меня проинформировали так же, как сообщил phpBoing.
Как было несколько сообщений об этой проблеме в последнее время, была внесена корректировка (http://hg.libsdl.org/SDL/rev/f8e3dcefed59) для этой проблемы больше не возникает.
Спасибо всем.