如何实现C++函数到SWIFT的回调

如何实现C++函数到SWIFT的回调,c++,ios,swift,callback,C++,Ios,Swift,Callback,我尝试在cpp类中执行一些操作,并在执行函数时返回对swift的回调 所以我做了这些事情: 在callbackClass.cpp中创建此函数 而对于header.h‍‍ : 在Swift端记录回调之前,一切都很好: 但当你尝试做其他事情时,比如: func callbackFunc(){ var value : String! callback({valueFromCallback in //call cpp function value = String(valueFro

我尝试在cpp类中执行一些操作,并在执行函数时返回对swift的回调

所以我做了这些事情:

在callbackClass.cpp中创建此函数

而对于header.h‍‍ :

在Swift端记录回调之前,一切都很好:

但当你尝试做其他事情时,比如:

func callbackFunc(){

  var value : String!

  callback({valueFromCallback in //call cpp function

    value = String(valueFromCallback) //It has a problem

  })
}
Xcode返回此错误:

无法从捕获上下文的闭包中形成C函数指针

我已经看到了这些问题,但没有帮助:


最后我意识到有可能把“闭包”作为C++ < /p>传递给C++。 因此,首先我在Swift类中创建了一个闭包:

typealias closureCallback = (Int32) -> ()
然后将其传递给cpp侧:

在页眉中.h‍‍

在callbackClass.hpp中:

在callbackClass.cpp中


这解决了一个我已经挣扎了几天的问题,它令人惊讶地直截了当。谢谢大家!@DavidSpry Yw,如果你发现一个答案是正确的,你可以投票支持这个答案而不是感谢它
int callback(void (*callback)(int));
func callbackFunc(){

  callback({valueFromCallback in //call cpp function

    print(valueFromCallback) //Works fine

  })
}
func callbackFunc(){

  var value : String!

  callback({valueFromCallback in //call cpp function

    value = String(valueFromCallback) //It has a problem

  })
}
typealias closureCallback = (Int32) -> ()
int callback(void (^closureCallback)(int));
class callbackClass.hpp
{
  .
  .
  .

  public:
      int run(void (^closureCallback)(int));
};

#endif
int callback::run(void (^closureCallback)(int))
 {
     for (unsigned int i = 0; i < 100; i++)
     {
         closureCallback(i);
     }
     return 0;
 }
typealias closureCallback = (Int32) -> ()

func callbackFunc(){

  var value : String!

  let closureValue: closureCallback = {valueFromclosureCallback in
      value = String(valueFromclosureCallback)
   }

    callback(closureValue) //call cpp function

}