JNI的干活! 嘿嘿,别急,我给你写啊.//用NativeDemo.dll的test()方法 public class NativeDemo { int i; public static void main(String args[]) { NativeDemo ob = new NativeDemo(); ob.i = 10; System.out.println("I is wahaha,called before"+ob.i); ob.test();// call a native method System.out.println("I is wahaha,called after"+ob.i); } public native void test(); static { System.loadLibrary("NativeDemo"); } } 你自己用VC写个DLL试试吧,需要注意的楼上都说了.
然后javac编译以后,用javah来运行之(和java运行一样的格式)生成一个.h文件
根据这个.h文件编写一个新的针对java的dll,然后在这个dll里面才调用你的C++的DLL
2、javac 编译编写好的类
3、通过javah -jni 得到.h的头文件
4、根据头文件编写c或c++类
5、将c或c++类编译成dll
现在关键是我在第四步,怎么根据头文件编写C++类,并在这个里面引用已经有的C++的DLL?
嘿嘿,别急,我给你写啊.//用NativeDemo.dll的test()方法
public class NativeDemo
{
int i;
public static void main(String args[])
{
NativeDemo ob = new NativeDemo();
ob.i = 10;
System.out.println("I is wahaha,called before"+ob.i);
ob.test();// call a native method
System.out.println("I is wahaha,called after"+ob.i);
}
public native void test();
static
{
System.loadLibrary("NativeDemo");
}
}
你自己用VC写个DLL试试吧,需要注意的楼上都说了.
因为java不支持地址调用(指针),直接调用dll不现实,需要c或c++搭建中间层。