我是一位帮助翻译文本的助手。
我正在尝试从Swift调用C函数,但我不确定如何定义变量来传递参数。
这个C函数是:
DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName, int * pnWidth, int * pnDecimals );
主要问题在于
pszFieldName
, pnWidth
和 pnDecimals
输入输出参数。我尝试过做如下处理:var dbf:DBFHandle = DBFOpen(pszPath, "rb")
var fName:[CChar] = []
var fieldWidth:Int32 = 0
let fieldDecimals:Int32 = 0
let fieldInfo:DBFFieldType = DBFGetFieldInfo(dbf, i, fName, &fieldWidth, &fieldDecimals)
但是它给我一个错误
Cannot invoke 'DBFGetFieldInfo' with an argument list of type '(DBFHandle, Int32, [CChar], inout Int32, inout Int32)'
Expected an argument list of type '(DBFHandle, Int32, UnsafeMutablePointer<Int8>, UnsafeMutablePointer<Int32>, UnsafeMutablePointer<Int32>)'
任何想法?
cString
是一个UnsafePointer<Int8>
,不是UnsafeMutablePointer<Int8>
。 - Mecki