saya bisa mengkompilasi dan menautkan V8 dengan permainan saya dan interpretasi kode berfungsi dengan baik. Namun saya ingin membagi kode saya dan loop game harus ada di satu utas dan mesin scripting harus berjalan di utas kedua di samping loop permainan saya. Saya menggunakan SDL dan karenanya mencoba kode ini untuk menelurkan utas baru
SDL_CreateThread(ScriptingEngine::SpawnMain, NULL);
di mana kode berikut adalah mesin skrip pengujian saya:
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;
}
}
Namun saya mendapatkan error seperti Access violation reading location 0x00000000.
di api.cc
baris 716: i::Isolate* isolate = env->GetIsolate();
.
Adakah yang tahu bagaimana saya bisa memperbaiki ini atau apa masalah sebenarnya?