我正在尝试在swift 3中设置一个简单的glfw应用程序。目前我一直在尝试设置回调函数。
func setupGLFW() {
...
glfwSetErrorCallback(errorCallback)
...
}
func errorCallback(error: Int32, description: UnsafePointer<Int8>) {
...
}
这在Swift2中有效,但现在我得到了这个错误:
无法将类型为“(Int32,UnsafePointer)->()”的值转换为所需的参数类型“glfwErrorFun!”
在参考了文档中与C API交互部分之后,我还尝试了这个签名:
func errorCallback(error: CInt, description: UnsafePointer<CChar>) {
...
}
这会导致相同的错误。
GLFWerrorfun
的c签名是:typedef void(* GLFWerrorfun) (int, const char *)
最佳答案
尝试使用:
func errorCallback(error: Int32, description: UnsafePointer<Int8>?) {
(请不要错过
?
之后的UnsafePointer<Int8>
)在Swift 3中,可以为空的指针作为可选指针导入,因此需要
?
。关于c - Swift 3中的GLFW回调签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41050354/