swift调用带有char **参数的C ++方法,并且需要操作char **参数

时间:2017-04-24 07:49:44

标签: c++ swift

拥有一个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编译器说:

无法将Array(String)类型的值转换为预期的参数类型&#39; UnsafeMutablePointer(UnsafeMutablePointer(Int8&gt;?&gt;!&#39;

有人可以帮帮我吗?如果回答一些解释,我们会更感激。

1 个答案:

答案 0 :(得分:2)

您需要创建UnsafeMutablePointer。但请首先阅读doc,因为使用起来非常棘手。

可能是这样的:

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

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