最近开始使用Swift 3.0和Xcode-8.0进行编码 面向将swift类函数地址赋值给结构
中定义的void指针列表的问题file.h
typedef struct MYStruct
{
void ** funptr; //The list of function pointer addr
size_t funCount;
} MYStruct;
file1.swift
.....
func Dummy()
{
}
func utility()
{
var myStructObj = MYStruct()
myStructObj.funptr = &Dummy() //Error: Cannot assign value of type '() -> Int32' to type 'UnsafeMutablePointer<UnsafeMutableRawPointer?>!'
......
//需要将此结构传递给C函数,在C函数中它将调用延迟函数来执行
cfunc(&myStructObj);
......
}
请建议我解决,谢谢你提前
答案 0 :(得分:0)
从快速语言中可以理解,我们无法像在“C”中那样直接获得函数地址
在swift中,只有通过符号获取函数地址的方法,一旦构建程序,使用 objdump
或nm
来获取您的函数的符号需要传递给C
调用例程作为函数指针
这是完全手动的过程。我能够以这种方式实现。