创建FMod绑定时可能的类型转换错误。可能有什么不对?

时间:2016-07-15 11:32:27

标签: go fmod cgo

我试图通过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()
}

0 个答案:

没有答案