問題タブ [cvv8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
952 参照

c++ - V8: 関数に送信された PrototypeTemplate => アクセスしようとすると例外が発生する

V8 コンテキストにアタッチする関数 AttachToContext を持つクラス「V8BaseClass」を作成したいと考えています。このクラスでは、プロトタイプとインスタンス テンプレートを使用して仮想関数 AttachAdditionalMembers を呼び出し、後継クラスがメンバーを追加できるようにします。コードの主要部分は次のようになります。

後継クラスは次のようになります。

この呼び出しは、基本クラスから呼び出されたときに正常に機能し、後続クラスから呼び出されたときに失敗したのはなぜですか?

==編集==これが役立つ場合は、例外が呼び出されたときのコールスタックです:

v8::internal::FixedArray::get(int index=3)アサート行の関数で失敗しますASSERT(index >= 0 && index < this->length());

==編集 2== V8BaseClass に「AttachAdditionalMembers」関数を実装しようとしましたが、同じ問題が発生しましたが、関数を変更するとうまくいきませんでしvirtualた。
何か案は???

0 投票する
1 に答える
1179 参照

c++ - 変数をインスタンス化するV8の順序(マルチスレッド)

私はGoogleのV8を初めて使用しますが、それらが提供する変数タイプを完全に使用する方法がわかりません。私が何になりたいかを説明することから始めましょう:

  1. メインスレッドでJSスクリプトをコンパイルしたいと思います。
  2. いくつかのスレッドでは、instance-> SetAccessor(...)またはprototype-> Set(...)(または存在する場合は他のオプション)を使用してコンテキストにさまざまな情報を「追加」するときにスクリプトを実行したいと思います。

次のことをいつ行う必要があるのか​​わかりません。

  • いつどこで作成しv8::handleScopeますか?メインスレッドで作成するだけで十分ですか?または、スレッドごとに1つ必要ですか?
  • いつどこで作成するv8::isolatev8::lockerか?スレッドごとにする必要がありますか?それは前か後v8::handleScopeか?

任意の情報が役立ちます(:

0 投票する
2 に答える
2316 参照

javascript - Nodejs/V8拡張機能のJavascriptを介してC++オブジェクトをC++関数に渡す

Nodejsを介してアクセスできるように、オブジェクトを入力として受け取るC++関数をラップしようとしています。これは、私がやろうとしていることを示す簡単な例です。

C++で仮定します。

Javascript(node.js)でできるようにしたいのですが、

私が見つけたnodejsC++プラグインの例はすべて、単純なデータ型とかなり些細な例で動作しています。このようなことをするための良い例やパターンはありますか?v8のドキュメントがなく、プラグインを作成するための面倒で冗長な構文がないため、私はこれを自分で行うことができませんでした。

必要、

  • JavascriptでC++オブジェクトを作成する機能
  • これらのオブジェクトを、Javascriptを介してそれらを必要とするメソッドまたは静的関数に渡す機能

また、node.jsを介してアクセスできるようにC ++ライブラリをラップするプロセスを簡素化しようとするために、v8-juice / cvv8よりも優れたものはありますか?

0 投票する
1 に答える
1393 参照

c++ - C++ オブジェクトをインスタンス化して Node.js 関数 V8 に渡す

C++ クラスのインスタンスをインスタンス化し、それを引数として JavaScript コールバックに渡したいと考えています。このクラスObjectWrapは から継承され、Node.js で使用できます。

インスタンスが JavaScript から来た場合、同じクラスのインスタンスをコールバックに渡すことができます。

これは私がしなければならないことの基本的な例です:

これは機能しません。代わりに、セグメンテーション違反が発生します。gdb私に言います:

instanceコードを変更してコールバックに渡せるようにするにはどうすればよいですか?


更新: 問題のクラスは Github: commit.ccで表示できます。