Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中使用C函数_Ios_C_Swift - Fatal编程技术网

Ios 在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

我想在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"
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*
的内容,这个问题和答案可能会更容易理解。也许考虑编辑?