Java调用C++编写的dll

更多精彩内容,请见:http://www.16boke.com


by zxy,QQ群:168424095

(1)编写java代码JniDemo.java
class JniDemo
{
 public native void printHello();
 public native int add(int a, int b);

 static
 {
  System.loadLibrary("JniDllDemo");
 }

 public static void main(String[] args)
 {
  JniDemo demo = new JniDemo();
  demo.printHello();

  int a = 3;
  int b = 4;
  System.out.println(a + "和" + b + "的和是:" + demo.add(3, 4));
 }
}
(2)用javac JniDemo.java命令编译,生成JniDemo.class文件
(3)用javah JniDemo命令生成扩展名为.h的头文件   

如果JniDemo.java在D盘根目录下: javah -classpath D:\ -jni JniDemo 
(4)用C/C++生成动态链接库
以下为VS2005用C++语言生成动态链接库的步骤:
新建项目,名称:JniDllDemo ->Win32->Win32项目->下一步->应用程序类型选择:DLL,附加选项勾上:空项目->完成。
在JDK安装目录找到头文件jni.h和jni_md.h。笔者这两个文件路径是:
jni.h在C:\Program Files\Java\jdk1.6.0_10\include
jni_md.h在C:\Program Files\Java\jdk1.6.0_10\include\win32
将头文件jni.h,jni_md.h及刚刚生成的JniDemo.h添加到工程中,并添加JniDemo.cpp源文件,实现本地方法:
#include "JniDemo.h"
#include <iostream>
using namespace std;

JNIEXPORT void JNICALL Java_JniDemo_printHello(JNIEnv *, jobject)
{
 cout<<"Hello!"<<endl;
}

JNIEXPORT jint JNICALL Java_JniDemo_add(JNIEnv *, jobject, jint a, jint b)
{
 return a+b;
}

生成Release版本JniDllDemo.dll
(5)将JniDllDemo.dll和JniDemo.class放在同一目录下,用java JniDemo命令运行可以看到输出:
Hello!
3和4的和是:7

源码下载:JniDemo


更多精彩内容,请见:http://www.16boke.com

你可能感兴趣的:(java,jdk,C++,jni,dll)