swift-codeからC++コードにコールバック関数を渡そうとしています。現在のバージョンのXcodeを使用しています。それは、これまでの機能に単純な変数のために動作しますが、ない:コールバック関数をswiftからC++に適切に渡すにはどうすればよいですか?
CPP-class.cpp:
bool * swiftvar;
void register_var(bool * varpntr){
swiftvar = varpntr;
cout<<"registered"<<endl;
}
void switch_var(){
*swiftvar = !(*swiftvar);
cout<<"switched"<<endl;
}
CPP-class.hpp:
#ifdef __cplusplus
extern "C"{
#endif
void register_var(bool *);
void switch_var();
#ifdef __cplusplus
}
#endif
と迅速で:
register_var(&testbool)
print(testbool)
switch_var()
print(testbool)
私が(私が知っている限り、現行の迅速版では簡単なはずです)同じものを試してみると、エラーが出ます。だから私はどのように迅速に関数ポインタを渡す必要がありますか?私が見つけたすべての方法はエラーを引き起こしていました。私が読んでいるように、UnsafeMutablePointerオブジェクトを定義する古い方法は廃止されましたが、現在どのように機能していますか?私は期待して何かのように:
CPP-class.cpp:
void run_func(void * funcpntr()){
(*funcpntr)();
}
CPP-class.hpp:
void run_func(void *);
(SWIFT-擬似コード):
run_func(testfunc())
または、ラップされたcppコードからswift-functionを実行するためのより良いソリューションがありますか?
本当にありがとうございます。署名は、すべての
void run_func(void (*)()); // Declaration
// Definition
void run_func(void (*funcpntr)()) {
(*funcpntr)();
}
と利用
void testfunc();
run_func(&testfunc);
コールバックのどの部分が誤植で、どの部分が本物のエラーであるかを知ることは非常に難しいです。コピーして貼り付けましたか? – molbdnilo