请各位老大看看这个dll调用的问题
本人写了个java函数调用c写的dll
class HelloWorld {
public native void displayHelloWorld();//定义本地方法
static {
System.loadLibrary("hello");//调入本地库
}
public static void main(String[] args) {
HelloWorld d=new HelloWorld();
d.displayHelloWorld();
}
}
其中dll如下
helloworld.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
hwlloworldimp.c
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
#include <windows.h>
JNIEXPORT void JNICALLJava_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{ printf("Hello world!\n");//在这里实现java类中定义的方法
//MessageBeep(0);//调用到win本地,会发一声响
return;}
编译之后,生成hello。dll,将其方入system32,可是调用java HelloWorld
时提示Exception in thread "main" java.lang.UnsatisfiedLinkError: displayHelloWorld
at HelloWorld.displayHelloWorld(Native Method)
at HelloWorld.main(HelloWorld.java:8)
dll可以装入,可是其中的方法却找不到,请问这是怎莫回事
问题点数:0、回复次数:0Top




