Java JNI未满足链接错误
所以我是JNI的新手,下面是一个简单的hello word示例,但我一直收到错误UnsatifiedLinkError。我做错了什么?这是我的.h文件:Java JNI未满足链接错误,java,c,netbeans,java-native-interface,native-methods,Java,C,Netbeans,Java Native Interface,Native Methods,所以我是JNI的新手,下面是一个简单的hello word示例,但我一直收到错误UnsatifiedLinkError。我做错了什么?这是我的.h文件: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class JNITEST_jnihellonative */ #ifndef _Included_JNITEST_jnihellonative #define
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JNITEST_jnihellonative */
#ifndef _Included_JNITEST_jnihellonative
#define _Included_JNITEST_jnihellonative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNITEST_jnihellonative
* Method: hellofromc
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JNITEST_jnihellonative_hellofromc(JNIEnv *,jobject);
#ifdef __cplusplus
}
#endif
#endif
java类
package JNITEST;
public class jnihellonative {
public native void hellofromc();
static{
System.load("C:\\Users\\Kevin\\Documents\\NetBeansProjects\\JniHelloTest.dll");
}
}
我一直在犯这个错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNITEST.jnihellonative.hellofromc()V
at JNITEST.jnihellonative.hellofromc(Native Method)
at JNITEST.Jnihello.main(Jnihello.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
我尝试过使用System.load和System.loadLibrary,但我遇到了相同的错误。自生成.h文件并编写.c文件以来,您已更改了类的名称。.h文件有Jnihello,Java代码有Jnihello 我已尝试使用System.load和System.loadLibrary
无关紧要。您不会从这两种方法中得到异常,而是在调用本机方法时得到异常。谢谢,我重新生成了.h和。c文件和与我以前使用的文件相同,但我确实将文件名更改为JNITEST_jnihellonative,这似乎有效。不可能。更改.h或.c文件的名称对Java没有任何影响。您必须将本机方法的名称从Java_JNITESTS_JniHello_hellofromc更改为Java_JNITESTS_JniHello_hellofromc。如果我更改为Java_JNITESTS_JniHello_hellofromc,问题仍然存在,因为javahellonative具有jni本机方法。所以我所做的就是清理和构建java代码,删除旧的.h和.c文件,生成具有前面提到的名称的新文件,编译de c代码,生成一个dll文件并运行程序。这似乎对我有用。另外,当比较新的.c和.h与旧的时,它们仍然是一样的。这没有意义。JNI本机方法所需的名称是Java_JNITEST_JniHello_hellofromc。“拥有jni本机方法的是javahellonative”这句话毫无意义。
package JNITEST;
public class jnihellonative {
public native void hellofromc();
static{
System.load("C:\\Users\\Kevin\\Documents\\NetBeansProjects\\JniHelloTest.dll");
}
}
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNITEST.jnihellonative.hellofromc()V
at JNITEST.jnihellonative.hellofromc(Native Method)
at JNITEST.Jnihello.main(Jnihello.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)