`
ujoc
  • 浏览: 48459 次
  • 性别: 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 初探

    NULL 博文链接:https://samyou.iteye.com/blog/1001781

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

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

    Java本地接口工作方式初探

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

    完整代码.rar

    初探JNI技术,HelloWorld 图文详细教程 用到的资源 就是代码啦

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

    博客网站: : 一,引言本文作为Android系统架构的开篇,实现提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,引入大家初探Android系统全貌以及内部运作机制。虽然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应用开发揭秘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