現在、 DerelictSDL2 (D の SDL2 ライブラリへのバインディング) を試しており、JPG 画像を正常に読み込んでウィンドウに表示するコードを作成しました。つまり、dmd でコンパイルした場合です。gdc (およびコード変更なし) を試してみると、コンパイルはできますが、実行時にイメージが読み込まれません。
私は正しいことをしたと信じています:
SDL_Init(SDL_INIT_VIDEO)
それから
IMG_Init(IMG_INIT_JPG)
そしてその後のどこか
this.data = IMG_LoadTexture(Window.renderer, name.ptr)
ここWindow.renderer
で (明らかに)SDL_Renderer*
とname.ptr
は、char*
ロードするイメージの名前を指しています。しかし、gdc でコンパイルするとIMG_Load
、IMG_LoadTexture
どちらも を返しnull
ますが、dmd では、新しく作成されたテクスチャへのポインタを返します...
私は何か他のことを忘れましたか(結局のところ、dmdを使用すると、なくても機能しましたIMG_Init
)?Derelict は dmd でしか動作しませんか (C 関数とのみインターフェイスしている場合でも)?
dmd: 2.065
gdc: 4.9.1
編集 :
問題がまったく異なることがわかりました。IMG_LoadTexture
2 番目の引数にデータへのポインターを使用しますがname.ptr
、dmd でのみ機能するようです。ただし、次のようなハードコードされた引数を試してみると:
IMG_LoadTexture(renderer, "../test/res/image.jpg")
dmd と gdc の両方で動作します。