我又遇到了 JNI 的问题...
这次我的代码有效......但是......在所有PC上都不正确。
我有:
- Jar 文件 -> 我的编
- dll 文件 -> 使用本机方法
- 另一个dll文件->具有其他功能。
在我的电脑上,所有这些文件都在一个文件夹中。
文件代码(.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 -> 第二个文件(在 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 -> 第三个文件,具有其他功能。
#ifndef __LusbapiH__
#define __LusbapiH__
// --------------------------------------------------------------------------
// ---------------------------- COMMON PART ---------------------------------
// --------------------------------------------------------------------------
#include <windows.h>
#include "LusbapiTypes.h"
如果我将文件扔到 system32 中,那么一切正常。
但。在另一台 PC(xp,7)中,我的代码不起作用!没关系:如果文件(+dll)在一个文件夹中,或者 dll 文件在 system32 -> 代码中找不到它们。
我想,这个问题出在运行时库(MSVS)中,但是我安装了它们,没有任何改变......
(在我的 PC 上是 IntelijIDEA、MSVS、jdk7.xx -> 一切正常。我在另一台 PC 上测试了 prog(安装了 MSVS)-> 一切正常。但在另一台 PC 上 -> 找不到 dll(并安装了运行时库也))。
我会等待帮助)