我想在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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句