`
ujoc
  • 浏览: 49038 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
阅读更多

A. For linux  (IED netbeans)

    新建载入native lib类

package jni;
public class Hello
{
  static
  {
    try
    {
//此处即为本地方法所在链接库名
      System.load("libhello.so");
    }
    catch(UnsatisfiedLinkError e)
    {
      System.err.println( "Cannot load hello library:\n " +
                                e.toString() );
    }
  }
  public Hello()
  {
  }
//声明的本地方法
    public native void SayHello(String strName);
}

 

   创建主类//ToSay.java

package jni
public class ToSay {
public static void main(String args[]){
        Hello hw = new Hello();
        hw.SayHello("Christmas");   
    }
}
 

   根据native class创建*.cpp文件//Hello.cpp

#include "Hello.h"
#include <stdio.h>
//与Hello.h中函数声明相同
JNIEXPORT void JNICALL Java_Hello_SayHello (JNIEnv * env, jobject arg, jstring instring)
{
   //从instring字符串取得指向字符串UTF编码的指针
const jbyte *str = (const jbyte *)env->GetStringUTFChars( instring, JNI_FALSE );
    printf("Hello,%s\n",str);
  //通知虚拟机本地代码不再需要通过str访问Java字符串。
    env->ReleaseStringUTFChars( instring, (const char *)str);(若是在c语言中使用(*env)->)
    return;
}
 

关于路径的说明:(*****为文件名)

在有包的情况下: 

javac  package/*****.java 

javah  package.*****(此时生成的.h文件名是package_*****.h,所以.cpp文件载入的.h不同,生成的lib也不同)

export LD_LIBRARY_PATH=./ (lib与package放在一个路径)通知下面java 运行时候lib所在位置

java package.***** 

 

在netbeans中直接运行,载入native lib的设置方法:

项目右键==》属性==》运行==》工作目录,在其中添加native lib路径

 

参考:http://www.ibm.com/developerworks/cn/java/l-linux-jni/

 

B. For windows(netbeans+vs2008)

说明:

  1. 添加JDK,用于生成DLL的include的头文件方法。在vs2008中,工具==》选项==》项目和解决方案==》vc++目录==》显示一下内容的目录==》包含文件
  2. 在java中的用于载入nativelib的类中:使用System.loadLibrary(“nativelib");不要使用System.loadLibrary(“nativelib.dll");

 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    eclipse 下实现java JNI 初探

    这篇博客"eclipse 下实现java JNI 初探"将引导我们了解如何在Eclipse环境中开发和使用JNI。 首先,我们需要了解JNI的基本概念。JNI为Java程序员提供了一种方式来编写可以调用本地(非Java)代码的Java方法。这些...

    进程保活(一:JNI层初探):单向循环式启动服务

    技术关键点:开启native子进程,循环间隔的不停去启动下服务,也不判断服务是否die了。而且,如果die了,但是间隔还没到,还是不会启动服务 结论:单杀可以杀死,force close 5.0以上无效,5.0以下部分手机无效,第...

    Java本地接口工作方式初探

    Java本地接口(Java Native Interface (JNI))允许运行在Java虚拟机(Java Virtual Machine (JVM))上的代码调用本地程序和类库,或者被它们调用,这些程序和类库可以是其它语言编写的,比如C、C++或者汇编语言。...

    Android_Sensor传感器系统架构初探

    在Android系统中,JNI接口允许Java Framework层调用C/C++实现的函数,例如,JNI层提供了`module-&gt;methods-&gt;open()`等函数,这些函数的实现会回调到HAL层的具体函数,如`sSensorDevice-&gt;data_open()`,实现跨语言的...

    OFDM水声通信在Android系统下实现初探.pdf

    《OFDM水声通信在Android系统下实现初探》这篇硕士论文主要探讨了如何在Android平台上实现OFDM(正交频分复用)技术应用于水声通信。OFDM技术因其高频率利用率、抗多径干扰能力和高速传输能力,近年来在水声通信领域...

    Java中的指针与引用初探.pdf

    受限指针在Java中指的是Java的内部机制,如本地方法接口(JNI)中使用的指针,这些指针受到严格的限制,避免了指针操作带来的安全隐患。本地方法接口允许Java代码调用C或C++的库,这时需要使用到指针,但这些指针的...

    andriod 3d 初探

    JNI(Java Native Interface)使得Java和C/C++之间能够互相调用,使得我们可以充分利用OpenGL ES的C库,提高3D应用的性能。 总的来说,Android 3D编程是一个涉及图形学、数学和编程技术的综合领域。掌握OpenGL ES的...

    hello-ndk.rar

    《Android NDK实战:Hello-NDK初探》 Android NDK(Native Development Kit)是Google提供的一款工具,它允许开发者在Android应用中使用C++和C语言进行原生代码开发,以实现高性能、低级别的硬件访问以及复用现有的...

    yuanhuihui.github.io:Android博客,分析Android框架源代码。 扑

    博客网站: : 一,引言本文作为Android系统架构的开篇,实现提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,引入大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综...

    jdk1.7.0_55-part1.zip

    《Java开发工具包JDK 1.7.0_55初探》 JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用程序的重要工具集,它包含了编译器、运行环境、调试器以及各种实用工具。在Java编程的世界里,JDK扮演着不可或...

    专业的android开发资料

    - **JNI (Java Native Interface)**:这是一种允许Java代码调用本地C或C++代码的机制,常用于实现高性能的图形渲染或音频处理。 - **JAVA**:这是Android应用开发的主要语言,利用标准的Java SE API和专有的Android ...

    《Android应用开发揭秘》附带光盘代码.

     6.1 Android数据存储初探  6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  6.5 Android数据库编程  6.5.1 SQLite简介  6.5.2 SQLite编程详解  6.5.3 SQLiteOpenHelper...

    《Android应用开发揭秘》源码

     6.1 Android数据存储初探  6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  6.5 Android数据库编程  6.5.1 SQLite简介  6.5.2 SQLite编程详解  6.5.3 SQLiteOpenHelper...

    Android应用开发揭秘

    6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享...

    Android应用开发揭秘pdf高清版

    6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享...

Global site tag (gtag.js) - Google Analytics