Swift Call C 方法带有char **参数,并且需要操作char **参数
swift call C++ method with char ** parameter, and need operate char ** parameter
具有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
时,您应该手动发布内存。
相关文章:
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 从 C# GUI 将 char * 参数传递给C++ dll 函数
- Swift Call C 方法带有char **参数,并且需要操作char **参数
- 使用"const char*"和"char*"参数连接两个第三方模块
- 将 char * 参数传递给 C# 函数
- 使用 char[] 参数通过 JNI 调用方法
- C# PInvoke - 返回 char* 和引用 char* 参数的函数
- 导出托管的C#函数将返回更改CHAR*参数为未托管的代码
- 即使在 Visual C++ 编译器中,在模板中传递 "const char" 参数也有些麻烦 2013 年 11 月 CTP
- 将'const char*'参数发送到接收'const char* &'的函数
- discover char*参数大小
- lambda接受“char”参数
- 在编译模板方面,char、有符号char或无符号char参数类型的函数重载
- 将类方法传递给const char*参数
- Atoi 仅返回 char* 参数的第一个数字
- 专门化模板成员函数来处理std::string和char[]参数
- 带有 char* 参数的 cout <<打印字符串,而不是指针值
- 带有char[]参数的c++模板
- GetModuleBaseName dosen't take char* 参数
- 以双精度数除以双精度数来获得循环中的余数和char参数不起作用