Java和C集成中的java.lang.UnsatisfiedLinkError?

时间:2014-03-23 18:56:00

标签: java c java-native-interface unsatisfiedlinkerror

我看到了很多关于这个主题的帖子。但没有帖子可以帮助我。 我尝试在java中调用名为hello的本机方法。但我得到了UnsatisfiedLinkError。

Java类

public class A {   

static {

    System.load("C:\\Users\\thisara\\Documents\\NetBeansProjects\\Test2\\hello.dll");
}

private native void hello();

public static void main(String[] args) {
    new A().hello();
}}

A.h DLL头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class A */

#ifndef _Included_A
#define _Included_A
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     A
 * Method:    hello
 * Signature: ()V
*/
JNIEXPORT void JNICALL Java_A_hello(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

C档案

#include <stdio.h>
#include <jni.h>
#include "A.h"
JNIEXPORT void JNICALL Java_A_hello(JNIEnv *env, jobject javaobj){
    printf("Hello World: From C");
    return;
}

当我运行代码时,我得到了

Exception in thread "main" java.lang.UnsatisfiedLinkError: A.hello()V
at A.hello(Native Method)
at A.main(A.java:22)
Java Result: 1

我该如何解决这个问题? 在此先感谢!

0 个答案:

没有答案