我看了网上看到比较流行的例子如下并照着做,
首先javac testdll.java
然后javah testdll
然后就在这个目录建立一个dll工程,添加如下的testdll.cpp文件
可是在编译这个C文件的时候出现了错误,说无法找到JNI.H
请问这是为什么啊?
public class testdll
{
static
{ System.loadLibrary("goodluck"); } public native static int get(); public native static void set(int i); public static void main(String[] args) { testdll test = new testdll(); test.set(10); System.out.println(test.get()); } } 用javac testdll.java编译它,会生成testdll.class。 再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。 其中C文件如下:
#include "testdll.h" int i = 0; JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) { return i; } JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) { i = j; }
首先javac testdll.java
然后javah testdll
然后就在这个目录建立一个dll工程,添加如下的testdll.cpp文件
可是在编译这个C文件的时候出现了错误,说无法找到JNI.H
请问这是为什么啊?
public class testdll
{
static
{ System.loadLibrary("goodluck"); } public native static int get(); public native static void set(int i); public static void main(String[] args) { testdll test = new testdll(); test.set(10); System.out.println(test.get()); } } 用javac testdll.java编译它,会生成testdll.class。 再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。 其中C文件如下:
#include "testdll.h" int i = 0; JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) { return i; } JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) { i = j; }
把goodluck.dll拷贝到testdll.class的目录下,java testdll运行它,就可以观察到结果了。这里的goodluck.dll文件在哪里呢谢谢
这里是在命令行进行么?
呵呵
我现在这里不能编译调试.
请问能说详细点么Hhee
建意看thinking in java中的jni部分,
我的第一个例子就是用它通过的.
jni.h最好不要copy,在project settings里jni.h的目录加到工程中要好一些。
毕竟路路通是不容易办到的