有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JNI未满足链接错误

所以我是JNI新手,下面是一个简单的hello word示例,但我一直遇到错误UnsatisfiedLinkError。我做错了什么?这是我的。h文件:

/* 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

。c文件

#include <jni.h>
#include<stdio.h>
#include<windows.h>
#include "jnihellonative.h"

JNIEXPORT void JNICALL
Java_JNITESTS_jnihellonative_hellofromc(JNIEnv *env, jobject obj){
    printf("Hello World");
    return;
  }

java主类

package JNITEST;


public class Jnihello {


   public static void main(String[] args) {
        jnihellonative jniprint = new jnihellonative();
        jniprint.hellofromc();
   }

}

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)

我试过使用这个系统。load()和系统。loadLibrary()但我得到了相同的错误


共 (1) 个答案

  1. # 1 楼答案

    自生成后,您已更改了类的名称。h文件并编写了。c文件。这个h文件有jnihellonative,Java代码有Jnihello

    I have tried using System.load() and System.loadLibrary()

    无关紧要。这两种方法都不会出现异常,而是在调用本机方法时出现异常