前边我都按步骤执行了,到最后一步java hello时总是提示不是有效地
java.lang.UnsatisfiedLinkError: D:\wanguang\tool\jdk1.6\hello.dll: %1 不是有效的 Win32 应用程序。
不知道为什么?
java.lang.UnsatisfiedLinkError: D:\wanguang\tool\jdk1.6\hello.dll: %1 不是有效的 Win32 应用程序。
不知道为什么?
java:public class HelloWorld {
public native void displayHelloWorld();
public native void displayMyName();
static {
// System.load("D:/tool/jdk1.6/hello.dll");
System.loadLibrary("hello");
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new HelloWorld().displayHelloWorld();
new HelloWorld().displayMyName();
}
}
生成的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);/*
* Class: HelloWorld
* Method: displayMyName
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayMyName
(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif自己创建的c文件:#include <stdio.h>
#include <jni.h>
#include <HelloWorld.h>
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *env, jobject obj){
printf("Hello");
return;
}/*
* Class: HelloWorld
* Method: displayMyName
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayMyName
(JNIEnv *env, jobject obj){
printf("Hello");
return;
}
编辑成dll是用Visual C++ F7没有错误提示
生成后的class、c、h后生成dll都在放在的d盘根目录下大家帮帮忙,我实在找不到问题所在