C 整数不作为对Swift中函数的引用传递

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)

我正在尝试将C库与Swift结合使用。我使用的是一个C函数,所需的参数似乎是指针。但它给出的错误是类型无效

代码如下:

    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很可能是CGFloat
GLsizei
int
的类型定义,所以我猜它不会是a
CGFloat
。它不应该是任何特殊类型的核心图形。我假设它是一个
Int
。谢谢。当我这样做时,它工作了,并将C字符串的声明更改为可变的“var”。