2012-03-12 7 views
2

私はC++のdllにJNIで働いている:sharedMemLib.dllとsharedMemLib2.dllJNIは、同じdll(differents名)の2倍の負荷、どの1つを使用するかを選択する?

を私は特定の関連付けしたい:私のjavaアプリが正常に二回これらのDLLをロード

「sharedMemLib.dll」たとえば、JNIInterfaceの1つのインスタンスはsharedMemLib.dllにアクセスし、JNIInterfaceの別のインスタンスはsharedMemLib2.dllにアクセスします。

2つのdllに同じ機能がありますが、どのようにアクセスすればよいのでしょうか?

答えて

1

エントリポイント名が両方のDLLで同じ場合は、忘れてください。同じOSで2つのJVMを実行しようとしても、動作するとは思えません。 2つの異なるパッケージ名(または2つのマシン)が必要です。私はいくつかのテストを行い、私のシステムでは、ロードされた最初のDLLが使用されています。ここで、JNIからJavaにコールバックを使用している場合、コールの2番目のパラメータ(jobject型)が原因で、コールバックは別のインスタンスを介して1つのインスタンスに送られます。

+0

実際。私はdllにオブジェクトを実装することでこの問題を解決しました。私はいくつかのDLLを読み込む(試して)代わりにオブジェクトを構築するseverals。 – Foobyto

関連する問題