私はJNIに問題があります、再び...
今回は私のコードが機能します...しかし...すべてのPCで正しいわけではありません。
私は持っている:
- Jar ファイル -> 私のプログラム
- dll ファイル -> ネイティブ メソッドを使用
- 別のdllファイル->別の機能を使用。
私のPCでは、このファイルはすべて1つのフォルダーにあります。
ファイルコード (.java):
// loading library
try {
Runtime.getRuntime().loadLibrary("E140tests");
setText("Library E140tests.dll was loaded correctly.");
} catch (UnsatisfiedLinkError ex) {
// try load with absolute path
setText("Error: E140tests.dll wasn't loaded!");
setErrorFlag(true);
}
E140tests.dll -> 2 番目のファイル (MSVS でコンパイル)
#include "jni.h"
#include "jni_md.h"
#include "Lusbapi.h"
#include "LusbapiTypes.h"
#include "JNITEST2.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNITEST2
* Method: ADCinit
* Signature: (LJNITEST2;)V
*/
JNIEXPORT void JNICALL Java_JNITEST2_ADCinit
(JNIEnv* env, jobject, jobject obj) {
...
lusbapi.dll -> 3 番目のファイルで、別の機能があります。
#ifndef __LusbapiH__
#define __LusbapiH__
// --------------------------------------------------------------------------
// ---------------------------- COMMON PART ---------------------------------
// --------------------------------------------------------------------------
#include <windows.h>
#include "LusbapiTypes.h"
ファイルをsystem32に投げると、すべてうまくいきます。
しかし。別の PC (XP、7) で私のコードが動作しません! 関係ありません: ファイル (+dll) が 1 つのフォルダーにある場合、または dll ファイルが system32 にある場合 -> コードはそれらを見つけることができません。
その問題はランタイム ライブラリ (MSVS) にあると思いましたが、それらをインストールしても何も変わっていません...
(私のPCにはIntelijIDEA、MSVS、jdk7.xxがあります->すべて動作します。別のPC(MSVSがインストールされている)でprogをテストしました->すべて動作しました。しかし、別のPCでは-> dllが見つかりませんでした(およびランタイムライブラリがインストールされています)それも))。
私は助けを待っています)