在Swift中使用C函数

克里斯·R

我想在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函数?(它是库的一部分,因此更改方法调用可能会出现问题)。

提前致谢!

马丁·R

如果是

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章