前边我都按步骤执行了,到最后一步java hello时总是提示不是有效地
java.lang.UnsatisfiedLinkError: D:\wanguang\tool\jdk1.6\hello.dll: %1 不是有效的 Win32 应用程序。
不知道为什么?

解决方案 »

  1.   

    我的文件:
    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盘根目录下大家帮帮忙,我实在找不到问题所在