我试图通过Go和CGo为FMod Studio的低级API创建Go绑定。我的包似乎在编译,但是使用它的示例程序抱怨我传递给其中一个FMod函数的参数无效。这两个使用了fmod.h中的FMod函数:
FMOD_RESULT F_API FMOD_System_Create (FMOD_SYSTEM **system);
FMOD_RESULT F_API FMOD_System_GetVersion (FMOD_SYSTEM *system, unsigned int *version);
这可能是一种类型转换,但我对Go来说相对较新,并且不太确定是什么错误。任何帮助表示赞赏。
这是FMod包:
package fmod
// #cgo darwin LDFLAGS: -framework fmod
// #cgo linux LDFLAGS: -lfmod -ldl
// #cgo windows LDFLAGS: -lfmod
// #include "fmod.h"
// #include "fmod_errors.h"
import "C"
var fmod *C.FMOD_SYSTEM
func Init() {
var version *C.uint
res := C.FMOD_System_Create(&fmod)
errCheck(res, "System_Create")
res = C.FMOD_System_GetVersion(fmod, version)
errCheck(res, "version")
println(C.GoString(C.FMOD_ErrorString(res)))
}
func errCheck(result C.FMOD_RESULT, msg string) {
if result != C.FMOD_OK {
println("Audio Error: "+msg)
}
}
测试程序:
package main
import("fmod")
func main() {
fmod.Init()
}