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

时间:2015-04-20 16:50:20

标签: c swift pointers opengl

我试图在Swift中使用C库。我使用的是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)

我收到此错误:

Cannot invoke glShaderSource with an argument list of type '(GLuint)', Int, UnsafePointer<GLchar>, inout Int32.

请注意,GLint是Xcode中的Int32

1 个答案:

答案 0 :(得分:0)

在C中,函数参数定义为

(GLuint shader, GLsizei count, const GLchar **string, const GLint *length)

我认为第3个参数(string)会出现问题。也许您还应该使用&传递它以获得双重引用。

请注意:

  

<强>字符串
  指定指向包含源的字符串的指针的数组   要加载到着色器中的代码。