C 整数不作为对Swift中函数的引用传递
我正在尝试将C库与Swift结合使用。我使用的是一个C函数,所需的参数似乎是指针。但它给出的错误是类型无效 代码如下:C 整数不作为对Swift中函数的引用传递,c,swift,pointers,opengl,C,Swift,Pointers,Opengl,我正在尝试将C库与Swift结合使用。我使用的是一个C函数,所需的参数似乎是指针。但它给出的错误是类型无效 代码如下: let shaderString = tempShaderString! as NSString let shaderCString = shaderString.UTF8String as UnsafePointer<GLchar> var shaderStringLength = GLint(shaderString.length)
let shaderString = tempShaderString! as NSString
let shaderCString = shaderString.UTF8String as UnsafePointer<GLchar>
var shaderStringLength = GLint(shaderString.length)
shaderHandle = glCreateShader(GLenum(type))
glShaderSource(shaderHandle, 1, shaderCString, &shaderStringLength)
让shaderString=tempShaderString!作为NSString
让shaderString=shaderString.UTF8String作为非安全指针
var shaderStringLength=GLint(shaderString.length)
shaderHandle=glCreateShader(格伦(类型))
glShaderSource(shaderHandle、1、ShaderString和shaderStringLength)
我得到这个错误:
Cannot invoke glShaderSource with an argument list of type '(GLuint)', Int, UnsafePointer<GLchar>, inout Int32.
无法使用类型为“(GLuint)”、Int、UnsafePointer、inout Int32的参数列表调用glShaderSource。
注意,
GLint
是Xcode中的Int32
。在C中,函数参数定义为
(GLuint shader, GLsizei count, const GLchar **string, const GLint *length)
我假设第三个参数(string
)有问题。也许您还应该使用&
传递它以获得双重引用
请注意:
字符串指定指向包含源的字符串的指针数组 要加载到着色器中的代码
GLsizei
GLsizei
映射到哪个swift类型?GLSize很可能是CGFloatGLsizei
是int
的类型定义,所以我猜它不会是aCGFloat
。它不应该是任何特殊类型的核心图形。我假设它是一个Int
。谢谢。当我这样做时,它工作了,并将C字符串的声明更改为可变的“var”。