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

标签 c swift pointers opengl

我正在尝试将 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)

我收到这个错误:

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

请注意,GLint 在 Xcode 中是一个 Int32

最佳答案

在 C 中,函数参数定义为

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

我假设第三个参数 (string) 会有问题。也许您还应该将它与 & 一起传递以获得双重引用。

注意:

string
Specifies an array of pointers to strings containing the source code to be loaded into the shader.

关于c - 整数不作为对 Swift 中函数的引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29753783/

相关文章:

c++ - 在动态分配的结构中使用 std::string 时出现段错误

c - 如何在 C 中创建具有可变字符串长度的转换/查找表

ios - 动画阴影属性

ios - 添加优先于所有其他交互的 UIGestureRecognizer

swift - 创建 NSManagedObject 类的新实例

Oracle PL/SQL : How to implement pointers to in-memory record types

c - printf 中 %s 之后的任何字符都打印在该行的开头

c - void函数中不写return语句会占用栈内存吗?

C 使用常量声明二维数组

c - strtok() 在 C99 中返回错误值?