Swift Call C 方法带有char **参数,并且需要操作char **参数

swift call C++ method with char ** parameter, and need operate char ** parameter

本文关键字:char 参数 操作 Swift 方法 Call      更新时间:2023-10-16

具有C 库,并使用Swift来调用C 函数。但是困难的一点是,此C 函数具有char **参数。我知道如何用Swift代码桥接C 代码。但是我不知道如何在Swift中写C char **,以便Swift可以调用C 功能。

这是C 功能,我应该致电:

`int avcmdtest( int argc, char ** argv ){ }`

在Swift中,我需要这样的东西:

`var inputArgChar:Array<String>
 inputArgChar[0] = "some chars" 
 inputArgChar[1] = "some chars" 
 inputArgChar[2] = "some chars"
 avcmdtest(3, &inputArgChar)`

但是,Swift编译器说:

无法将类型数组(字符串(的值转换为预期参数类型'unsafemutablePointer(unsafemutablepointer(int8>?>!'

(

有人可以帮助我吗?如果回答一些解释,请更加感谢。

您需要创建UnsafeMutablePointer。但是请首先阅读此文档,因为使用它非常棘手。

可能是这样的:

var char: CChar =  CChar("1")!
let charPointer = UnsafeMutablePointer<CChar>(&char)

请记住,当您使用UnsafeMutablePointer时,您应该手动发布内存。