次のDコードを実行すると、奇妙なSDLエラーが発生します。
import std.string;
import derelict.sdl2.sdl;
pragma(lib, "DerelictUtil");
pragma(lib, "DerelictSDL2");
int main(){
DerelictSDL2.load();
if(SDL_Init(SDL_INIT_VIDEO) < 0){
throw new Exception(format("Error initalizing SDL: %s", SDL_GetError()));
}
return 0;
}
これはSDL_GetError()から以下を返します
object.Exception@min.d(12): Error initalizing SDL: 7F2802391940
----------------
./min(extern (C) int rt.dmain2.main(int, char**).void runMain()+0x1c) [0x434284]
./min(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x433bfe]
./min(extern (C) int rt.dmain2.main(int, char**).void runAll()+0x3b) [0x4342cb]
./min(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x433bfe]
./min(main+0xd1) [0x433b89]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f28023b776d]
----------------
Mercurialから構築された最新バージョンのSDL2に対してこれを実行しています。dコードはdmdv2.060でコンパイルされます。番号7F2802391940はガベージのようですが、事前にSDL_ClearErrorを呼び出すと、同様の16進エラーメッセージが生成されます。