2017-12-18 20 views
-1

私はJavaプロジェクトにC++カスタムlibを持っています。このカスタムC++ libはfibre(boost C++ライブラリ)を使用しています。 JavaからC++ファイバーを呼び出せますか? 仮想マシンがそれを知っていなくても、事実上、ファイバはVMスレッド内で動作します。だから、すべてがOKかもしれないが、多分私はVMのデザインについて知っているいくつかのことが、この使用法では期待されていない? (注意してくださいそれは通常のC + +コールではない、それはC + +の中でファイバーフレームワークを使用しているので、C + +のTLSはJavaと競合する可能性がありますスレッドコンテキストスイッチは同じですか?)Javaから呼び出されたBoost C++ファイバーへのJNI呼び出しを作成できますか?

答えて

0

javaからC++ファイバー?

はい、JavaでC++ライブラリを呼び出すことができます。 C++モジュールをJavaに呼び出すには、Javaネイティブインタフェース(JNI)を使用できます。

必要に応じて、C++でビルドされたライブラリにアクセスするためにラッパーライブラリを作成する必要があります。 JavaコードはJNIを使​​用してWrapper C++ライブラリに接続し、Wrapper LibraryはC++のファイバーライブラリに接続します。

JNIコールについては、tutorialを参照してください。

+0

申し訳ありませんが質問は別です。私はJNIを知っています。 C++ファイバーは、VMの内部構造に直接影響を与える可能性があります。 –

+1

Javaでの移植のC++ブースターについてのテストの後、私はあなたに言うことができます(C++のコードがC++のコードを実行している場合にのみ動作します)、上記の応答が間違っています。この実験は、将来の相互運用性に重要な影響を与えます。 Javaでは、C++との相互運用性は向上しません。ファイバーは、より高いレベルで透明になるために、OSカーネルレベルで実装されなければなりません。 –

+0

あなたの所見を共有してくれてありがとう。 –

関連する問題