私は、サードパーティの dll (abc.dll としましょう) を使用する必要がある Java プロジェクトに取り組んでいます。そこで、JNI を使用してネイティブ ヘッダー ファイルを作成しました。
次に、vs2005 (典型的な win32 アプリ) で dll プロジェクトを作成し、JNI によって作成されたヘッダー ファイルを追加しました。プロジェクトの clr 古い構文サポートを選択し、プロジェクトへの参照として abc.dll を追加しました。
これまでのところ、すべて問題ありません。これが問題です。abc.dll のいくつかのメソッドを使用して、ヘッダー ファイルで定義されたメソッドを実装しました。abc.dllには「abc」というクラスがあり、それが私がしていることです:
abc *abcObj = new abc(); abcObj->callSomeMethod();
私はソリューションからビルドを行いますが、すべて問題ありません。しかし、Java プログラムを実行すると、JVM から、ネイティブ コードが壊れたというエラーが表示されます?!?! 私はそれをデバッグしましたが、問題は new() にあります。abcObj をインスタンス化することはできません。
次に、その abc.dll を使用して C++ アプリを試しました。出来た。
JNIまたはそのマネージド/アンマネージドに問題があるに違いないと思います。私は c/c++ の経験があまりないので、あまり理解していません (少なくとも、今のところ理解する時間がありません)。私がしようとしている唯一のことは、サードパーティの dll を使用してラッパー dll を作成し、Java アプリでラッパー dll を使用することです。
どんな助けでも大歓迎です。
前もって感謝します...
-ハイダル
編集:サードパーティのdllに必要なすべてのdllがあります。