0

C++アプリケーションでv8を使用しようとしています。私はhelloworld自体に固執しています!

https://developers.google.com/v8/get_startedのhelloworldは問題なく機能します。今、私はコードの例外/エラーをキャッチしようとしています。そこで、TryCatchtrycatch;を使用しました。

int main(int argc, char *argv[]) {
    HandleScope handle_scope;
    Persistent<Context> context = Context::New();
    Context::Scope context_scope(context);
    TryCatch trycatch; /* TO CATCH EXCETIONS/ERRORS */
    Handle<String> source = String::New("xyz();");
    Handle<Script> script = Script::Compile(source);
    Handle<Value> result = script->Run();
    if (result.IsEmpty()) {
        fprintf(stderr, "Exception: %s\n",
                *String::AsciiValue(trycatch.Exception()));
        return -1;
    }
    String::AsciiValue ascii(result);
    printf("%s\n", *ascii);
    context.Dispose();

    return 0;
}

例外は正常にキャッチされますが、プログラムは正しく終了しません。セグメンテーション違反が発生します。私は何が間違っているのですか?

4

1 に答える 1

0

愚かなことであることが判明しました。私は長い間libv8-devをインストールしていましたが、それを忘れていました。そして今、私はソースからV8をインストールしました。そのため、システムには2つのバージョンのV8が搭載されていました。libv8-devをアンインストールしましたが、問題は解決しました。

于 2012-07-31T08:06:20.320 に答える