java本地调用c++的动态库解决方法

java本地调用c++的动态库
大家好,我在做个java调c++的dll库的例子。只是简单的输出个hello world这样的。但是在将c++做成dll库的时候遇到了问题。
首先是java的调用类

HelloWorld.java
这是它的内容:

Java code

public class HelloWorld {
    
    
    public native void displayHelloWorld();
    public native void displayMyName();
    
    static { 
        System.loadLibrary("hello");
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new HelloWorld().displayHelloWorld();
        new HelloWorld().displayMyName();

    }

}

然后通过命令行
javac HelloWorld.java
javah HelloWorld
生成了
HelloWorld.class和HelloWorld.h
这是HelloWorld.h的自动生成的代码
C/C++ code

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



两个文件
接着在同个目录下创建了
hello.c文件,内容如下
C/C++ code

#include <stdio.h>
#include <jni.h>
#include <HelloWorld.h>

JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *env, jobject obj){
    printf("Hello world!\n");
    return;
}

JNIEXPORT void JNICALL Java_HelloWorld_displayMyName
(JNIEnv *env, jobject obj){
    printf("我叫XX\n");
    return;
}


接着想将hello.c做成一个hello.dll库文件,在命令行:
cl -ID:\HelloWorld.h -IC:\java\include -IC:\java\include\win32 -LD D:\hello.c -Fehello.dll
可是却出现了一下错误:
D:hello.c(3):fatal error C1083:Cannot open include file:'HelloWorld.h':No such file or direcotry

说明:HelloWorld.java,HelloWorld.class,HelloWorld.h,hello.c他们都在D盘目录下。
因为自己不懂c++,所以搞不清这到底是什么问题。hello.c中include的HelloWorld.h明明是在同一个目录下,而且我在命令行里还用了“-ID:\HelloWorld.h”引入了这个资源。可是还是报找不到的错误。望各位大侠帮忙看看啊。不胜感激。。。。。。





------解决方案--------------------
-ID:\HelloWorld.h 
你加这个是何意?

-I后面跟的是路径而不是文件