JNI之helloworld

如题,如下

1,创建java项目,创建class HelloWorld

<pre name="code" class="java">package com.min;

public class HelloWorld {

	public native void displayHelloWorld();
	public native int max(int a, int b);
	
	static {
        System.loadLibrary("JNIHelloWorld");
    }
	
	public void mydisplay(){
		System.out.println("mydisplaylllllll");
	}
	
	public static void main(String[] args) {
		HelloWorld myh = new HelloWorld();
		myh.mydisplay();
		try {
			myh.displayHelloWorld();
			int maxnumber = myh.max(3,5);
			System.out.println(maxnumber);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		//.displayHelloWorld();
		return;
	}

}


 2,生成.h文件,cmd到目录bin下,javah -jni com.min.HelloWorld  生成com_min_HelloWorld.h 

3,vs创建c++ dll项目

<pre name="code" class="cpp">#include <stdio.h>
#include "jni.h"
#include "D:\work\javaWorkSpace\JNIHelloWorld\bin\com_min_HelloWorld.h"


// #ifdef JNIHELLOWORLD_EXPORTS
// #define JNIEXPORT __declspec(dllexport)
// #else
// #define JNIEXPORT __declspec(dllimport)
// #endif

// extern "C" __declspec(dllexport) void myprint()
// {
// 	printf("myPrint");
// 	return;
// }

 
 void JNICALL Java_com_min_HelloWorld_displayHelloWorld
	(JNIEnv *, jobject)
{
	printf("my JNI hellowrold!");
	return;
}

 JNIEXPORT jint JNICALL Java_com_min_HelloWorld_max
	 (JNIEnv *, jobject, jint a, jint b)
 {
	 return a>b?a:b;
 }


 

注意,要include相应的jni文件   C:\Program Files\Java\jdk1.8.0_25\include\win32  C:\Program Files\Java\jdk1.8.0_25\include

还要注意,如果jdk是64位的(java -version可以看到),那么vs项目要使用x64编译

然后生成JNIHelloWorld.dll文件

4,拷贝dll到java项目中,可以新建一个目录mydllLib,放进去,然后eclipse中选中 项目属性-java build path-library-JRE system library- Native library, 然后 Edit,将mydllLib目录填进去

5,可以了,运行

mydisplaylllllll
5
my JNI hellowrold!





注: 这里补充说明一点,如果要调用第三方库(third.dll),那么third.dll 要放在项目.project 同一目录下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值