Ich konnte V8 kompilieren und mit meinem Spiel verknüpfen und die Code-Interpretation funktioniert einwandfrei. Ich möchte jedoch meinen Code teilen und die Spielschleife sollte in einem Thread vorhanden sein und die Skript-Engine sollte in einem zweiten Thread neben meiner Spielschleife ausgeführt werden. Ich verwende SDL und habe daher versucht, mit diesem Code einen neuen Thread zu erstellen
SDL_CreateThread(ScriptingEngine::SpawnMain, NULL);
Dabei ist der folgende Code meine Testskript-Engine:
namespace ScriptingEngine {
v8::HandleScope handleScope;
v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New();
v8::Persistent<v8::Context> context;
void Setup() {
// TODO: bind functions to global
// ...
context = v8::Context::New(NULL, global);
}
int SpawnMain(void *arguments) {
v8::Context::Scope scope(context);
v8::Handle<v8::Script> script = v8::Script::Compile(
v8::String::New("'Hello World'")
);
v8::Handle<v8::Value> result = script->Run();
context.Dispose();
return EXIT_SUCCESS;
}
}
Ich erhalte jedoch einen Fehler wie Access violation reading location 0x00000000.
in api.cc
Zeile 716 : i::Isolate* isolate = env->GetIsolate();
.
Hat jemand eine Ahnung, wie ich das beheben kann oder was das genaue Problem ist?