Ben oyun ve kod yorumlama çalışmaları karşı V8 derlemek ve bağlantı başardı. Ancak kodumu bölmek istiyorum ve oyun döngü bir iş parçacığında var olmalı ve komut dosyası motoru benim oyun döngüsünün yanında ikinci bir iş parçacığında çalışmalıdır. SDL kullanıyorum ve bu nedenle yeni bir iş parçacığı oluşturmak için bu kodu denedim
SDL_CreateThread(ScriptingEngine::SpawnMain, NULL);
Aşağıdaki kod benim test komut dosyası motorum:
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;
}
}
Ancak böyle bir hata alıyorum Access violation reading location 0x00000000.
içinde api.cc
hat 716: i::Isolate* isolate = env->GetIsolate();
.
Bunu nasıl düzeltebileceğim veya kesin sorunun ne olduğu hakkında bir ipucu var mı?