eclipse JNI示例。利用C/C++实现JAVA中调用的函数
来源:互联网 发布:软件开发部门经理职责 编辑:程序博客网 时间:2024/06/10 20:03
第一步。新建一个JAVA工程JniTest。再在包jni下新建一个HelloWorld类
package jni;public class HelloWorld { static{ System.loadLibrary("HelloWorld"); } public native void dispHelloWorld(); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //System.getProperty("java.library.path"); new HelloWorld().dispHelloWorld(); }}
第二步。利用javah命令产生相应的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class jni_HelloWorld */#ifndef _Included_jni_HelloWorld#define _Included_jni_HelloWorld#ifdef __cplusplusextern "C" {#endif/* * Class: jni_HelloWorld * Method: sayHi * Signature: ()V */JNIEXPORT void JNICALL Java_jni_HelloWorld_sayHi (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
第三步。在对应的目录下新建jni_HelloWorldImp.cpp文件实现头文件jni_HelloWorld.h的函数。
#include <jni.h>#include "jni_HelloWorld.h"#include <stdio.h>JNIEXPORT void JNICALL Java_jni_HelloWorld_sayHi (JNIEnv *env, jobject obj){ printf("Hi,World!"); return;}
第四步。利用cl命令(本无cl命令。cl是vs编译器。可以配置环境变量。使得命令能运行。)
在控制台下>cl -LD jni_HelloWorldImp.cpp -FeHelloWorld.dll,
以上命令的参数中,-LD表示产生dll,-Fe后面表示产生dll的名字,具体的参数可以自己用cl -help命令查看,
如果成功编译,会产生HelloWorld.dll, HelloWorld.lib, HelloWorld.exp,
以及jni_HelloWorldImp.obj四个文件。
这儿有一个小技巧。选择VS下面的控制台工具,比较不容易出错。因为可能有些系统库路径不支持。在VS下面的控制台可以避免这一尴尬。当然你也可以用.bat文件指明路径,但如果路径较多,就比较麻烦。
OK,成功生成了。
最后一步。设置下本地JNI的路径
然后,运行测试。。
- eclipse JNI示例。利用C/C++实现JAVA中调用的函数
- C_C++_Java Java利用JNI调用C的函数
- JAVA中利用JNI与VS2012实现C/C++的DLL调用
- JNI编程中C调用Java实现。
- 自动生成Jni中Java调用C语言实现的签名函数名
- Android利用JNI实现java调用C或C++
- Java利用JNI调用C/C++的小结
- JNI简单实现Java调用C++/C的HelloWorld
- JNI简单实现Java调用C++/C的HelloWorld
- JNI简单实现Java调用C++/C的HelloWorld
- Android JNI实现简单的c层调用Java层函数(C层调用Java层Toast进行提示)
- 利用jni调用c的dll
- java jni 入门1 - 一个简单的从Java程序中调用C函数
- 【Java】Java调用C/C++程序的实现(jni)
- 学习利用JNI实现Java调C的DLL
- Java通过JNI调用C/C++函数
- C/C++调用java---JNI常用函数
- JAVA通过JNI调用C函数Demo
- 动态生成类工具
- matlab 矩阵按照行列数值大小排序
- 描述编译和链接过程
- jetty通过URL传值汉字乱码问题
- struts2标签获得后台传递的变量
- eclipse JNI示例。利用C/C++实现JAVA中调用的函数
- MRTG使用方法
- 最简单的日志开关
- Rspec 中的 Should_receive
- linux下mysql数据库字符编码设置
- 线性回归预测法
- 谈谈软件项目管理——敏捷开发
- java滚动条
- =。= 好吧,获取优酷视频真实下载地址的后台完成了