拥有一个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;
有人可以帮帮我吗?如果回答一些解释,我们会更感激。
答案 0 :(得分:2)
您需要创建UnsafeMutablePointer
。但请首先阅读doc,因为使用起来非常棘手。
可能是这样的:
var char: CChar = CChar("1")!
let charPointer = UnsafeMutablePointer<CChar>(&char)
请记住,当您使用UnsafeMutablePointer
时,您应该手动释放内存。