私はこれをどこでも調べてみましたが、できることはすべて試しましたが、SDL を Go で動作させることができません。これが私のコードです。少しずさんですが、出発点として、テストするために、それを機能させたかっただけです。私はそれをクリーンアップして、後で不要な #defines をすべて取り除くつもりでした。
package main
// #cgo LDFLAGS: -lSDL -lSDL_main -lSDL_image
// #include <stdio.h>
// #include <SDL/SDL.h>
// #include <SDL/SDL_main.h>
// #include <SDL/SDL_image.h>
import "C"
import "runtime"
func init() {
runtime.LockOSThread()
}
func main() {
var image* C.SDL_Surface
var screen* C.SDL_Surface
C.SDL_Init( C.SDL_INIT_EVERYTHING )
screen = C.SDL_SetVideoMode(640, 480, 32, C.SDL_SWSURFACE)
hello = C.SDL_LoadBMP( "moe.bmp" )
C.SDL_BlitSurface(hello, nil, screen, nil)
C.SDL_Flip(screen)
C.SDL_Delay(2000)
C.SDL_FreeSurface(hello)
C.SDL_Quit()
}
これにより、「コマンドライン引数」エラーが発生します。「SDL_LoadBMP」が宣言されていません(この関数で最初に使用されます)。検索や魔法の量では修正されません。必要な場合は、SDL 1.0.2 を使用して Ubuntu を使用しています (と思います)。
Go用の唯一のSDL 1ラッパーは2年前のもので、2つの良いものはSDL 2用であるため、ラッパーを使用したくありません.SDL 1を使用したいと思います.私を案内できる人に感謝します.
また、おまけの質問ですが、コンパイラは (明らかに) テストを許可しないため、BlitSurface の引数で "nil"、"NULL"、または "C.NULL" (#define する必要があることがわかっています) を使用しますか?