如何在Swift中将指针地址传递到C API的参数中?

如何在Swift中将指针地址传递到C API的参数中?,swift,xcode,Swift,Xcode,我正在用Swift5语言将C API导入Xcode。我无法将指针的地址传递到参数中: 以下是C API的原型: DEV_STATUS OpenDevice(PVOID*pHandle) 我应该为这个输入参数声明什么变量? 我试图在swift中声明以下变量: var ppDevHandle: UnsafeMutablePointer<PVOID?>? devStatus = OpenDevice(ppDevHandle) var-ppDevHandle:UnsafeMutablePo

我正在用Swift5语言将C API导入Xcode。我无法将指针的地址传递到参数中: 以下是C API的原型:

DEV_STATUS OpenDevice(PVOID*pHandle)

我应该为这个输入参数声明什么变量? 我试图在swift中声明以下变量:

var ppDevHandle: UnsafeMutablePointer<PVOID?>?
devStatus = OpenDevice(ppDevHandle)
var-ppDevHandle:UnsafeMutablePointer?
devStatus=OpenDevice(ppDevHandle)

它可以构建,但在调用“OpenDevice”之前,“ppDevHandle”为零。API返回了“无效参数”。

您可能正在查找以下内容:

var-ppDevHandle=PVOID()
devStatus=OpenDevice(&ppDevHandle)
或者这个:

var-ppDevHandle:PVOID?
devStatus=OpenDevice(&ppDevHandle)

请提供
PVOID
DEV_STATUS
的typedef定义。还有C-imported函数的Swift签名。感谢Kamil,PVOID的定义是
typedef void*PVOID。下面的答案适合我。谢谢herzi。第二个适合我。第一个错误消息是“无法为没有参数的“PVOID”类型调用初始值设定项”。这通常取决于句柄参数是否设计为C API中的不透明指针。我很高兴这对你现在的工作。祝你的项目的其余部分好运!