Ios 在Swift中使用C函数
我想在Swift中使用一个C函数,它具有以下方法定义:Ios 在Swift中使用C函数,ios,c,swift,Ios,C,Swift,我想在Swift中使用一个C函数,它具有以下方法定义: int startTest(char *test1, char* test2) 如果我用我的Swift代码调用这个方法 startTest("test1", "test2") 我收到以下错误消息: 'String' is not convertible to 'UnsafeMutablePointer<Int8>' 然后像这样调用该方法: var test1 = "test1" var test2 = "test2" st
int startTest(char *test1, char* test2)
如果我用我的Swift代码调用这个方法
startTest("test1", "test2")
我收到以下错误消息:
'String' is not convertible to 'UnsafeMutablePointer<Int8>'
然后像这样调用该方法:
var test1 = "test1"
var test2 = "test2"
startTest(&test1, &test2)
我明白了
所以我的问题是:如何使用C函数?(它是库的一部分,因此更改方法调用可能会有问题)
提前谢谢 在以下情况下:
int startTest(const char *test1, const char* test2);
int startTest(char *test1, char* test2);
您可以从Swift调用函数,只需
let result = startTest(test1, test2)
(无运营商地址)。Swift字符串将自动转换
为函数调用创建C字符串
就
int startTest(const char *test1, const char* test2);
int startTest(char *test1, char* test2);
您需要使用(变量)Int8
缓冲区调用函数,因为
编译器必须假定字符串可能是从C函数修改的
例如:
var cString1 = test1.cStringUsingEncoding(NSUTF8StringEncoding)!
var cString2 = test2.cStringUsingEncoding(NSUTF8StringEncoding)!
let result = startTest(&cString1, &cString2)
你有一个接受两个字符的函数,但是你用两个字符串调用它。是的,但是我怎么能把一个字符串转换成一个字符*?这正是我的问题,因为C函数不知道字符串类型,它只能与char*一起工作。如果标题中有关于
char*
和/或const char*
的内容,这个问题和答案可能会更容易理解。也许考虑编辑?