11

Webアプリのクライアント側に公開したいC++コードがいくつかあります。理想的には、C ++クラスのJavascriptラッパーオブジェクトを記述して、クライアントサイドで使用できるようにします。

これは以前に行われたことがありますか?誰かがこれがどのように達成されるかを示すためのリンクを持っていますか?

4

9 に答える 9

5

C ++コードをjavascriptに変換するライブラリがあり、それが役立つかもしれません: emscripten

于 2012-08-18T03:05:38.780 に答える
2

Javascriptエンジンのスパイダーモンキー1を埋め込んで拡張するためのLibjsppC++テンプレートベースのラッパー。8。5以上

クモザル?MozillaProjectのJavascript/ECMAScriptエンジンです。

Libjsppを使用すると、C ++開発者はSpiderMonkeyを埋め込むことができますか?シンプルかつ簡単にアプリケーションに組み込むことができます。Libjsppを使用すると、同じプロセス内で複数のJavascriptエンジンを実行できます。これは、スレッドパラダイムごとに1つのエンジンに適しており、真のパラリシムを実現するのに役立ちます。また、Libjsppは、ユーザーがエンジン内で複数のスレッドを実行するのを止めることはできません。

http://code.google.com/p/libjspp/

于 2013-03-08T04:28:16.810 に答える
1

私はRPCがあなたが望むものだと思います。ある種のフレームワークを使用して、サーバー側で関数をラップする必要があります。まだ使っていませんが、これは有望そうです。

クライアント側では、プロキシオブジェクトを使用して関数呼び出しをディスパッチします。通信は通常、XML-RPCまたはJSON-RPCのいずれかを介して処理されます。私はこのクライアントサイドフレームワークを使用し、非常に満足していましたが、他にもたくさんあると思います。

于 2012-08-17T13:01:56.373 に答える
1

これは古いトピですが、私は今まさにその状況にあり、ネット上で見つけたすべてのソリューションは複雑であるか時代遅れです。

最近、V8エンジンをサポートし(ライブラリの90%が古くなっている新しい分離APIを含む)、優れた露出とインタラクションAPIを提供するライブラリに出くわしました。

https://github.com/QuartzTechnologies/v8bridge

私の解決策が誰にでも役立つことを願っています。

于 2014-10-22T16:45:56.700 に答える
1

これを行うためのnbindと呼ばれる比較的新しいライブラリがあります。多分それはあなたに合うでしょうか?それは私にはとてもよく見えます、そして私はちょうどそれを使い始めようとしています。

于 2017-07-17T21:06:50.890 に答える
0

C ++コードをクライアントに配置する必要がある場合、Webアプリでこれを行う簡単な方法はありません。解決策には、サポートするブラウザのプラグインをコーディングすることが含まれる場合があります。プラグインには、JavaScriptコードからアクセスできます。

たとえば、クライアントアプリケーションでこれが必要な場合は、別のケースです。このようなことは行われており、アプリケーションをたとえばクロムライブラリやその他のjavascript実行エンジンにリンクする(または外部から実行する)必要があります。このようにして、C ++クラスへのバインディングを作成し、javascriptからそのようなオブジェクトを使用することができます。その逆も可能です。これも簡単な解決策ではなく、実装するのに多大な労力を要する可能性があることに注意してください(追加のリソースも必要です)。

于 2012-08-17T12:26:59.647 に答える
0

C++JSONパーサーが必要だと思います。ここで1つ見つけることができるはずですhttp://www.json.org/。動作なしでC++オブジェクトをシリアル化および逆シリアル化するだけなので、必要なことをすべて実行できない場合がありますが、十分に機能するはずです。いくつかの議論については、 https://stackoverflow.com/questions/245973/whats-the-best-c-json-parserを参照してください。

于 2012-08-17T12:23:13.353 に答える
0

たとえば、C ++クラスをPHPまたはPythonでラップしてから、API over HTTPを実装して、必要な関数にアクセスできます。

または、関数をJavaScriptとして公開することを主張する場合は、Node.jsを使用して、クラスをラップするC++アドオンを作成することができます。ここでNode.jsのドキュメントを参照してください:http://nodejs.org/api/addons.html#addons_wrapping_c_objects

しかし、いずれにしても、サーバー上の関数にアクセスするための何らかのAPI(HTTP SOAP、XML RPC)の作成を避けることはないと思います。

于 2012-08-17T12:30:18.613 に答える
-1

QMLは正確にはJavascriptではありませんが、QtプレーンなC ++ではありませんが、それらが一緒に機能することは、必要なものと同じように見えます。

于 2015-02-18T11:14:43.363 に答える