ฉันสามารถคอมไพล์และเชื่อมโยง V8 กับเกมของฉันและการตีความโค้ดทำงานได้ดี อย่างไรก็ตามฉันต้องการแบ่งรหัสของฉันและลูปเกมควรมีอยู่ในเธรดเดียวและเอ็นจิ้นการเขียนสคริปต์ควรรันในเธรดที่สองข้างลูปเกมของฉัน ฉันใช้ SDL และลองใช้รหัสนี้เพื่อวางไข่เธรดใหม่
SDL_CreateThread(ScriptingEngine::SpawnMain, NULL);
ที่รหัสต่อไปนี้เป็นเครื่องมือทดสอบสคริปต์ของฉัน:
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;
}
}
แต่ฉันได้รับข้อผิดพลาดเหมือนAccess violation reading location 0x00000000.
ในapi.cc
บรรทัด i::Isolate* isolate = env->GetIsolate();
716:
มีใครรู้บ้างไหมว่าฉันจะแก้ไขปัญหานี้ได้อย่างไรหรือปัญหาที่แน่นอนคืออะไร?