笔者使用的是swig4.0.2, node版本是v10.23.0 。(注:目前这个版本的swig 是不支持v12版本以上)
void gcd(std::function<void()>);
%{
#include "test.h"
%}
%typemap(in) std::function<void()> {
v8::Isolate* isolate = args.GetIsolate();
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Function> cb = v8::Local<v8::Function>::Cast(args\[0\]);
$1 = \[&\] {
cb->Call(context, Null(isolate), 0, nullptr).ToLocalChecked();
}
}
%include "test.h"
javascript代码里的实现
test.gcd(function () {
console.log("run gcb..........")
});