j'ai pu compiler et lier la V8 à mon jeu et l'interprétation du code fonctionne bien. Cependant, je veux diviser mon code et la boucle de jeu devrait exister dans un thread et le moteur de script devrait fonctionner dans un deuxième thread à côté de ma boucle de jeu. J'utilise SDL et j'ai donc essayé ce code pour générer un nouveau thread
SDL_CreateThread(ScriptingEngine::SpawnMain, NULL);
où le code suivant est mon moteur de script de test:
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;
}
}
Cependant , je reçois une erreur comme Access violation reading location 0x00000000.
dans la api.cc
ligne 716: i::Isolate* isolate = env->GetIsolate();
.
Quelqu'un at-il une idée de la façon dont je peux résoudre ce problème ou quel est le problème exact?