i have this function in dll
static COMMANDERDLL_API int InsertCodeBar(const char* pszBuffer);
in my node addon i have this function
void InsertCodeBarWrapper(const FunctionCallbackInfo<Value>& args){
Isolate* isolate = args.GetIsolate();
Local<Function> cb = Local<Function>::Cast(args[1]);
Local<String> bar = args[0]->ToString();
const unsigned argc = 1;
Local<Value> argv[argc] = { CSGPCommander::InsertCodeBar(bar) };
cb->Call(isolate->GetCurrentContext()->Global(), argc, argv);
}
when i try compile, node-gyp return error: "cannot convert argument 1 from 'v8::Local' to 'const char *'
how to convert v8::String to const char *?
Resolved
create a function ToCString to convert V8::String to const char *
use namespace v8;
const char* ToCString(const String::Utf8Value& value) {
return *value ? *value : "<string conversion failed>";
}
Usage:
void InsertCodeBarWrapper(const FunctionCallbackInfo<Value>& args){
Isolate* isolate = args.GetIsolate();
Local<Function> cb = Local<Function>::Cast(args[1]);
String::Utf8Value str(args[0]);
const char* bar = ToCString(str);
const unsigned argc = 1;
Local<Value> argv[argc] = { CSGPCommander::InsertCodeBar(bar) };
cb->Call(isolate->GetCurrentContext()->Global(), argc, argv);
}