問題タブ [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.
c++ - V8: 関数に送信された PrototypeTemplate => アクセスしようとすると例外が発生する
V8 コンテキストにアタッチする関数 AttachToContext を持つクラス「V8BaseClass」を作成したいと考えています。このクラスでは、プロトタイプとインスタンス テンプレートを使用して仮想関数 AttachAdditionalMembers を呼び出し、後継クラスがメンバーを追加できるようにします。コードの主要部分は次のようになります。
後継クラスは次のようになります。
この呼び出しは、基本クラスから呼び出されたときに正常に機能し、後続クラスから呼び出されたときに失敗したのはなぜですか?
==編集==これが役立つ場合は、例外が呼び出されたときのコールスタックです:
v8::internal::FixedArray::get(int index=3)
アサート行の関数で失敗しますASSERT(index >= 0 && index < this->length());
==編集 2== V8BaseClass に「AttachAdditionalMembers」関数を実装しようとしましたが、同じ問題が発生しましたが、関数を変更するとうまくいきませんでしvirtual
た。
何か案は???
c++ - 変数をインスタンス化するV8の順序(マルチスレッド)
私はGoogleのV8を初めて使用しますが、それらが提供する変数タイプを完全に使用する方法がわかりません。私が何になりたいかを説明することから始めましょう:
- メインスレッドでJSスクリプトをコンパイルしたいと思います。
- いくつかのスレッドでは、instance-> SetAccessor(...)またはprototype-> Set(...)(または存在する場合は他のオプション)を使用してコンテキストにさまざまな情報を「追加」するときにスクリプトを実行したいと思います。
次のことをいつ行う必要があるのかわかりません。
- いつどこで作成し
v8::handleScope
ますか?メインスレッドで作成するだけで十分ですか?または、スレッドごとに1つ必要ですか? - いつどこで作成する
v8::isolate
のv8::locker
か?スレッドごとにする必要がありますか?それは前か後v8::handleScope
か?
任意の情報が役立ちます(:
javascript - Nodejs/V8拡張機能のJavascriptを介してC++オブジェクトをC++関数に渡す
Nodejsを介してアクセスできるように、オブジェクトを入力として受け取るC++関数をラップしようとしています。これは、私がやろうとしていることを示す簡単な例です。
C++で仮定します。
Javascript(node.js)でできるようにしたいのですが、
私が見つけたnodejsC++プラグインの例はすべて、単純なデータ型とかなり些細な例で動作しています。このようなことをするための良い例やパターンはありますか?v8のドキュメントがなく、プラグインを作成するための面倒で冗長な構文がないため、私はこれを自分で行うことができませんでした。
必要、
- JavascriptでC++オブジェクトを作成する機能
- これらのオブジェクトを、Javascriptを介してそれらを必要とするメソッドまたは静的関数に渡す機能
また、node.jsを介してアクセスできるようにC ++ライブラリをラップするプロセスを簡素化しようとするために、v8-juice / cvv8よりも優れたものはありますか?
c++ - C++ オブジェクトをインスタンス化して Node.js 関数 V8 に渡す
C++ クラスのインスタンスをインスタンス化し、それを引数として JavaScript コールバックに渡したいと考えています。このクラスObjectWrap
は から継承され、Node.js で使用できます。
インスタンスが JavaScript から来た場合、同じクラスのインスタンスをコールバックに渡すことができます。
これは私がしなければならないことの基本的な例です:
これは機能しません。代わりに、セグメンテーション違反が発生します。gdb
私に言います:
instance
コードを変更してコールバックに渡せるようにするにはどうすればよいですか?
更新: 問題のクラスは Github: commit.ccで表示できます。