最近需要对RFID读写器进行操作,厂家提供的都是c++的SDK,以前都是在delphi下进行开发也还能用。但是现在实在懒得再去开启Delphi去进行那些数据库的操作(ORM用懒了)。于是考虑怎样在Java下直接调用SDK,前台使用SWT去实现。SWT不用多说,用了这么久感觉还是比较顺手的,非常适合做那些对界面要求不高的应用,大的其实也可以RCP上去也不错,扯远了。今天仔细学习了一下JNI的开发和使用,由于习惯了Eclipse,于是直接选用EclipseCDT来进行C++的开发,网上这样的文章也很多,这里算是留个学习记录吧。
=================正式的分割线=======================
1、下载EclipseCDT(这次用的是Windows,暂时就不写Linux下的)
没啥说的,下载吧(今天家里电信ADSL免费提速到12M,第一次看到迅雷保持在1M/S以上,那个爽啊·······)
2、下载安装MinGW
地址:http://sourceforge.net/projects/mingw/files/
在目录的最上方有一条“Looking for the latest version? Download mingw-get-inst-20120426.exe (662.7 kB)”,可以直接下载最新的安装包,因为经常更新这里就不给链接了,直接去点吧
3、安装MinGW
安装目录默认选C:\MinGW就不变了,记得把C++编译器选上,其他的感觉没有太大意义,暂时就不选了
4、为MinGW修改系统变量
右键我的电脑->属性->高级->环境变量->系统变量中添加
MINGW_HOME=C:\MinGW
LIBRARY_PATH = %MINGW_HOME%\lib
C_INCLUDE_PATH = %MINGW_HOME%\include
在PATH变量的最后增加 ;%MINGW_HOME%\bin
将C:\MinGW\bin目录下的mingw32-make.exe 改名为 make.exe
5、修改Eclipse配置
为了让CDT能够采用MinGW进行编译,需要在 Eclipse 中进行设定
Window->Preferences->C/C++->Make->New Make Project->New Builder->Binary Parser 取消 Elf Parser(如果本来就没选就别折腾他了) 改选 PE Windows Parser
6、新建一个Java项目
HelloJNI.java代码:
package com.strong.jni;
public class HelloJNI {
public native void sayHello();
static {
System.loadLibrary("libStrongCDT");
}
/**
* @param args
*/
public static void main(String[] args) {
HelloJNI hjni = new HelloJNI();
hjni.sayHello();
System.out.println("==========");
}
}
7、生成jni的h头文件
为了方便,做一个jni.bat文件放到“StrongJNI\bin”目录
set java_home=C:\Program Files\Java\jdk1.6.0_32
set path=%java_home%\bin
set class_path=%java_home%\lib;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar
javah -jni com.strong.jni.HelloJNI
@pause
路径根据自己的修改吧,运行后生成一个h的头文件com_strong_jni_HelloJNI.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_strong_jni_HelloJNI */
#ifndef _Included_com_strong_jni_HelloJNI
#define _Included_com_strong_jni_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_strong_jni_HelloJNI
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_strong_jni_HelloJNI_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
8、建立JNI的C++项目
新建一个MinGW的标准C++项目StrongCDT,将刚才的com_strong_jni_HelloJNI.h拷贝到项目目录
最终的项目为:
HelloJNI.c代码如下,编写好之后点锤子编译,会在debug目录生成对应的dll文件
#include "com_strong_jni_HelloJNI.h"
JNIEXPORT void JNICALL _Java_com_strong_jni_HelloJNI_sayHello(JNIEnv *env, jobject obj) {
// 这里是方法实现
printf("Hello World Native\nSimen");
}
此时,如果代码报错,请增加java的includes,右键项目选Properties -> C/C++ General -> Paths and Symbols在Configuration中选择[All configurations];然后在Includes页签中的Language选择GNU C,单击Add按钮添两个路径如下,java安装路径按照自己的选,注意必须两个都加入:
9、java项目调用dll
把生成好的dll拷贝到项目的lib目录,然后在Run -> Run Configurations -> Arguments中的VM arguments 中添加-Djava.library.path=./lib
10、执行成功!
- 大小: 36.5 KB
- 大小: 85.2 KB
- 大小: 72.1 KB
- 大小: 61.7 KB
- 大小: 63.6 KB
- 大小: 99.3 KB
- 大小: 86.9 KB
分享到:
相关推荐
本文将指导读者如何在 Eclipse 中搭建 JNI 开发环境,并使用 CDT 插件进行 C/C++ 代码的编写和编译。 环境搭建 1. 安装 CDT 插件 CDT(C/C++ Development Tooling)是 Eclipse 中的 C/C++ 开发插件。可以从官方...
### Eclipse里Android JNI的开发方法 #### NDK开发环境安装 **Native Development Kit (NDK)** 是由Google提供的工具集,旨在支持开发者使用C或C++编写原生代码,并能够将其与Java应用相结合,最终打包成APK。通过...
### Eclipse Android NDK JNI 详细开发流程 #### 一、前言 在进行Android应用开发时,有时我们需要利用原生代码(通常是C/C++)来提高应用性能或访问某些特定硬件资源,这时就需要用到NDK(Native Development Kit...
- 打开Eclipse,进入“Help”菜单,选择“Eclipse Marketplace”,搜索并安装CDT(C/C++ Development Tooling)插件,以支持C/C++项目的开发。 5. **集成NDK与Eclipse** - 在Eclipse中创建一个新的Android项目,...
标题"Eclipse_Jni_Opencv_NDK"涉及的是在Eclipse环境下使用JNI(Java Native Interface)集成OpenCV库,并通过NDK(Native Development Kit)进行原生代码开发。这是一个关于Android平台上的混合编程实践,旨在利用...
### Android Eclipse JNI (NDK) 开发环境搭建详解 #### 一、引言 随着移动互联网的迅猛发展,Android平台的应用开发变得越来越重要。而JNI(Java Native Interface)与NDK(Native Development Kit)作为连接Java层...
"用Delphi开发JNI" Delphi开发JNI(Java Native Interface)应用是指使用Delphi语言来开发基于JNI的本地代码,以便与Java进行交互通信。在本文中,我们将讨论如何使用Delphi语言来开发JNI本地代码,并与Java进行...
标题中的“使用eclipse单步调试jni代码(方法1)”是指使用Eclipse集成开发环境进行JNI(Java Native Interface)代码的调试,这是Android应用开发中处理C或C++原生代码的一种方式。JNI允许Java代码调用本地库,通常...
标题中的"DELPHI开发JNI必备 jni.pas"表明这是一个针对Delphi开发者的资源,其中包含的`jni.pas`文件是用Delphi编写的,目的是支持在Delphi项目中使用JNI来调用本地C/C++库或Java方法。`jni.pas`通常会封装JNI的C...
在本实例中,我们将探讨如何使用Eclipse集成开发环境来创建一个简单的JNI项目,实现C语言与Java之间的字符串传递。 首先,我们需要了解JNI的基本概念。JNI提供了一种方式,使得Java应用程序能够调用本地(非Java)...
在这个"开发JNI程序的工具集"中,包含了一些关键资源,帮助开发者高效地进行JNI编程。 首先,`api.chm`文件是一个帮助文件,通常包含了JNI的完整API参考。这个文件会详细列出所有可用的JNI函数,包括它们的参数、...
【Eclipse JNI Demo】是一个基于Eclipse开发的Java Native Interface(JNI)示例项目,用于演示如何在Android应用中使用JNI技术。JNI是Java平台的标准编程接口,它允许Java代码和其他语言写的代码进行交互,特别是在...
本示例是关于如何在Eclipse开发环境中结合Microsoft Visual Studio 2010来实现JNI程序开发的一个详细教程。 首先,我们需要理解JNI的核心概念。JNI允许Java应用程序调用本地(非Java)代码,比如C++,并反之亦然。...
eclipse ndk Hello-jnieclipse ndk Hello-jnieclipse ndk Hello-jnieclipse ndk Hello-jni
### 使用Eclipse单步调试JNI代码(方法2) #### 环境配置 为了能够有效地进行JNI代码的调试,首先需要确保以下环境已正确配置: - **ADT Bundle**: Eclipse版本为Juno - **NDK**: 版本r9 - **JDK**: 版本8 - **...
本主题探讨的是如何使用Delphi这个强大的 Pascal 编译器来开发JNI应用,以便于在Java环境中调用Delphi编写的原生代码。 首先,理解JNI的基本概念是必要的。JNI提供了一种桥梁,使得Java虚拟机(JVM)可以调用本地...
Eclipse作为Android开发的主要IDE,通过集成CDT(C/C++ Development Tooling)插件,可以支持JNI的开发和调试,简化了原本手动编译和导入.so文件的繁琐步骤。 首先,要搭建JNI开发环境,你需要以下组件: 1. ...
本文将详细介绍在Eclipse环境下进行Android JNI开发的基本知识点,包括环境配置、开发流程、常见问题以及一个示例项目。 一、环境配置 1. 安装Eclipse IDE:首先,你需要一个安装了ADT(Android Developer Tools)...