将功能分配给SWIFT 3中的无效指针列表时出错?

时间:2017-10-16 12:07:30

标签: c swift3 void-pointers

最近开始使用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);
......

}

请建议我解决,谢谢你提前

1 个答案:

答案 0 :(得分:0)

从快速语言中可以理解,我们无法像在“C”中那样直接获得函数地址

在swift中,只有通过符号获取函数地址的方法,一旦构建程序,使用 objdumpnm 来获取您的函数的符号需要传递给C调用例程作为函数指针

这是完全手动的过程。我能够以这种方式实现。