java调用jni
2010-06-15 13:12
295 查看
新建一个java类
package com.lh;
public class HelloWorld {
static{
System.loadLibrary("dllTest");//该名称是生成的dll的名字
}
public native void say();
}
使用jdk命令 生成 c++ 头文件 【头文件相当于java接口】
javah com.lh.HelloWord
生成一个 com_lh_HelloWorld.h的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class com_lh_HelloWorld */
#ifndef _Included_com_lh_HelloWorld
#define _Included_com_lh_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_lh_HelloWorld
* Method: say
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say
(JNIEnv *, jobject); 这玩意就是说Java里面 com.lh.HelloWorld下的say方法 有个分号在后面
表示亟待实现
新建一个 dynamic link library 工程
拷贝生成的头文件到工程中
添加一个源文件 名称随便取 比如HelloWordImpl.cpp
#include "jni.h"
#include "com_lh_HelloWorld.h"
#include <iostream.h>
JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say(JNIEnv *, jobject)
{
cout<<"你好jni"<<endl;
return;
}
jni.h是java中的
到jdk目录下的include 目录下 拷贝 jni.h 和 jni_md.h到 c++工程中
编译 丢到system32 或者 java工程更目录下
要丢到哪里 很简单
System.out.println(System.getProperty("java.library.path"));
输出的接口的地方 都可以丢 dll文件 其中有一个 . 表示当前根目录
package com.lh;
public class HelloWorld {
static{
System.loadLibrary("dllTest");//该名称是生成的dll的名字
}
public native void say();
}
使用jdk命令 生成 c++ 头文件 【头文件相当于java接口】
javah com.lh.HelloWord
生成一个 com_lh_HelloWorld.h的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class com_lh_HelloWorld */
#ifndef _Included_com_lh_HelloWorld
#define _Included_com_lh_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_lh_HelloWorld
* Method: say
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say
(JNIEnv *, jobject); 这玩意就是说Java里面 com.lh.HelloWorld下的say方法 有个分号在后面
表示亟待实现
新建一个 dynamic link library 工程
拷贝生成的头文件到工程中
添加一个源文件 名称随便取 比如HelloWordImpl.cpp
#include "jni.h"
#include "com_lh_HelloWorld.h"
#include <iostream.h>
JNIEXPORT void JNICALL Java_com_lh_HelloWorld_say(JNIEnv *, jobject)
{
cout<<"你好jni"<<endl;
return;
}
jni.h是java中的
到jdk目录下的include 目录下 拷贝 jni.h 和 jni_md.h到 c++工程中
编译 丢到system32 或者 java工程更目录下
要丢到哪里 很简单
System.out.println(System.getProperty("java.library.path"));
输出的接口的地方 都可以丢 dll文件 其中有一个 . 表示当前根目录
相关文章推荐
- android-JNI学习之java和c++相互调用
- JNI、C/C++、java调用dll、java与c数据类型对应关系
- Mac上Java JNI调用c++
- Android利用JNI实现java调用C或C++
- java jni调用过程分析
- Java通过JNI调用C/C++
- java调用hownet--jni
- Java通过JNI调用Tuxedo方法
- JNI Java调用c/c++代码 demo (用VS2010)
- JNI java调用c函数 native 步骤 代码
- JNI编程 —— 让C++和Java相互调用
- 一个java调用c++程序的实例(jni)
- JNI由浅入深_7_c调用Java方法一
- JNI中C调用Java方法
- 02-JNI-java相互调用
- JNI实现回调| JNI调用JAVA函数|参数和返回值的格式
- Java调用C和C++函数时的JNI使用区别
- Java通过JNI调用本地C/C++程序--常用示例
- AndroidJNI 通过C++调用JAVA
- jni使用基础(七)之java调用c事例Demo