本示例简单输出 hello worldjava
1.编写java类 ios
package com.yeegee.jni; public class TestJni { public native void doHello(); public static void main(String[] args) { System.loadLibrary("Test"); TestJni jni=new TestJni(); jni.doHello(); } }
2.生成 .h 文件spa
进入到项目的bin目录下,命令行
执行命令行: javah com.yeegee.jni.TestJniunix
会在bin目录下生成:com_yeegee_jni_TestJni.hcode
3.新建C++工程io
在vs中添加C++工程class
将 com_yeegee_jni_TestJni.h 复制到项目中stream
在 jdk所在目录下的include文件夹中,将jni.h 复制到项目中变量
在 jdk所在目录下的include/win32文件夹中,将jni_md.h 复制到项目中
4.编写C++代码
在项目同名cpp文件中,输出hello world
#include "stdafx.h" #include "iostream" #include "com_yeegee_jni_TestJni.h" using namespace std; JNIEXPORT void JNICALL Java_com_yeegee_jni_TestJni_doHello(JNIEnv *, jobject){ cout<<"hello world"<<endl; }
5.设置环境变量
设置path变量,添加 dll文件所在路径值(示例:E:\CLanguage\Test\Debug);
6.运行程序
此时,再回到第一段,执行java的main方法,调用 doHello
输出内容是:hello world
注意事项:
1. #inlculde <jni.h> 须要改为 #include "jni.h"。
2.C++的io 须要使用 include "iostream" 以及 using namespace std。
3.若是方法有改动,cpp源文件和头文件都须要进行修改。
4.调用dll时,只须要写名称便可,不须要文件扩展名。
5.在unix平台,使用的库文件,扩展名是.so