标签:edit void generated 编译 int end 声明 err bsp
一,构建Java本地方法类,声明native方法,编译
类文件:MyTest1.java
package com.merrick.test; class MyTest1 { public native int addnumber1(int a, int b); static{ //System. System.loadLibrary("jnidll1");//必须省略后缀.dll } public static void main(String args[]) { int res = new MyTest1().addnumber1(1234,234); System.out.println(res); } }
编译类文件生成class文件:>javac -verbose -d . MyTest1.java
二,javap生成JNI样式的C头文件
生成头文件:>javah MyTest1
头文件:com_merrick_test_MyTest1.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_merrick_test_MyTest1 */ #ifndef _Included_com_merrick_test_MyTest1 #define _Included_com_merrick_test_MyTest1 #ifdef __cplusplus extern "C" { #endif /* * Class: com_merrick_test_MyTest1 * Method: addnumber1 * Signature: (II)I */ JNIEXPORT jint JNICALL Java_com_merrick_test_MyTest1_addnumber1 (JNIEnv *, jobject, jint, jint); #ifdef __cplusplus } #endif #endif
三,在VS中新建win32 dll项目
项目名称jnidll1
四,复制生成的JNI样式.h文件至win32 dll项目文件夹
dll项目添加既有项:com_merrick_test_MyTest1.h
五,实现.h文件中的native方法
jnidll1.cpp
// jnidll1.cpp : 定义 DLL 应用程序的导出函数。 // #include "stdafx.h" #include "com_merrick_test_MyTest1.h" JNIEXPORT jint JNICALL Java_com_merrick_test_MyTest1_addnumber1 (JNIEnv *env, jobject obj, jint a, jint b){ return a+b; };
六,生成dll:jnidll1.dll
七,在java代码中调用DLL中的native方法,测试
复制jnidll1.dll至java程序主目录
测试java调用:>java com.merrick.test.MyTest1
输出:>1468
标签:edit void generated 编译 int end 声明 err bsp
原文地址:https://www.cnblogs.com/m160331/p/9760371.html