gpt4 book ai didi

ios - 在 Swift 中使用 C 函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:16:55 25 4
gpt4 key购买 nike

我想在 Swift 中使用 C 函数,它具有以下方法定义:

int startTest(char *test1, char* test2)

如果我像这样从我的 Swift 代码中调用这个方法

startTest("test1", "test2")

我收到以下错误消息:

'String' is not convertible to 'UnsafeMutablePointer<Int8>'

如果我将方法定义更改为:

int startTest(const char *test1, const char* test2)

并像这样调用该方法:

var test1 = "test1"
var test2 = "test2"
startTest(&test1, &test2)

我明白了

'String' is not identical to 'Int8'

所以我的问题是:如何使用 C 函数? (它是库的一部分,因此更改方法调用可能会有问题)。

提前致谢!

最佳答案

如果是

int startTest(const char *test1, const char* test2);

您可以简单地从 Swift 调用该函数

let result = startTest(test1, test2)

(没有地址运算符)。 Swift 字符串会自动转换到函数调用的 C 字符串

如果是

int startTest(char *test1, char* test2);

您需要使用(可变的)Int8 缓冲区调用该函数,因为 Swift编译器必须假设字符串可能会从 C 函数中修改。

例子:

var cString1 = test1.cStringUsingEncoding(NSUTF8StringEncoding)!
var cString2 = test2.cStringUsingEncoding(NSUTF8StringEncoding)!
let result = startTest(&cString1, &cString2)

关于ios - 在 Swift 中使用 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com