I am trying to embed a C++ program to v8, and after trying to follow the
official embedder's guide and some other old (ancient, I'd say) guides all
over the web, I came to the following program:
void testing()
{ // Initialize V8.
V8::InitializeICU();
Platform* platform = platform::CreateDefaultPlatform();
V8::InitializePlatform(platform);
V8::Initialize();
// Create a new Isolate and make it the current one.
Isolate* isolate = Isolate::New();
{
Isolate::Scope isolate_scope(isolate);
// Create a stack-allocated handle scope.
HandleScope handle_scope(isolate);
scripthelper* sh = new scripthelper();
// Create a new context with a global template
Handle<ObjectTemplate> global = ObjectTemplate::New(isolate);
Local<ObjectTemplate> design_templ = ObjectTemplate::New(isolate);
design_templ->SetInternalFieldCount(1);
Rsyn::Design* d = new Rsyn::Design();
//this line causes a segmentation fault:
Local<Object> obj = design_templ->NewInstance();
obj->SetInternalField(0, External::New(isolate, d));
global->Set(String::NewFromUtf8(isolate, "Design"), FunctionTemplate::
New(isolate, designConstructor));
global->Set(String::NewFromUtf8(isolate, "print"), FunctionTemplate::New
(isolate, jsprint));
Local<Context> context = Context::New(isolate, NULL, global);
// Enter the context for compiling and running the hello world script.
Context::Scope context_scope(context);
// Create a string containing the JavaScript source code.
Local<String> source = String::NewFromUtf8(isolate, sh->
getSourceFromFile("/home/andreoliv/uplace2/project/src/script/test.js").
c_str());
// Compile the source code.
Local<Script> script = Script::Compile(source);
//run script
script->Run();
// Run the desired function
Handle<Value> args[2];
sh->addStringToArguments("HAHA ", args, 0);
sh->addNumberToArguments(5.0, args, 1);
Handle<Value> result = sh->callJSFunction(context->Global(), "JSrepeat",
args, 2);
// Convert the result to an UTF8 string and print it.
String::Utf8Value utf8(result);
printf("result: %s\n", *utf8);
sh->callJSFunction(context->Global(), "useCppFunc", args, 2);
}
Local<Object> obj = design_templ->NewInstance();
This line causes a segmentation fault that I could not fix.
Can someone explain what's going on?
While I'm on topic, is there any good and working guides on embedding? All
guides I come across are either shallow or won't work anymore because of
updates.
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.