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
라인 (716) : i::Isolate* isolate = env->GetIsolate();
.
누구든지 내가 어떻게 해결할 수 있는지 또는 정확한 문제가 무엇인지 실마리가 있습니까?
답변을 다시 받으면 +1입니다. 자신의 질문에 답변해야 답변을 표시 할 수 있습니다 (S / O 팀은 가능하면 자신의 질문에 답변하도록 권장합니다).
—
Jonathan Dickinson
@JonathanDickinson : 평판이 충분하지 않아서 본인의 질문에 대답 할 수있을 때까지 8 시간 동안 차단되었습니다. 나는 내일 이것을 할 것이다 ;-)
—
Christian Ivicevic