os x 下jni小实验

2 篇文章 0 订阅
jni是java与c/c++使用的一套方法,网上教程很多,在windows下,linux下也做过相关练习,osx下倒是第一次,写一下具体过程。

首先写代码:
package com.magic.jni;
 
public class HelloWorld {
     
      static{
System.loadLibrary("Hello");
      }
 
      publicnative void DisplayHello();

      publicstatic void main(String[] args) {
new HelloWorld().DisplayHello();
      }
 
  }
例子程序,照抄网上一篇文章~~
首先编译一下
javac HelloWorld.java 
得到.class文件。

然后返回最上层com同级目录下,执行
javah -jni com.magic.jni.HelloWorld
会得到com_magic_jni_HelloWorld.h文件
内容如下:
#include <jni.h>

#ifndef _Included_com_magic_jni_HelloWorld
#define _Included_com_magic_jni_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALLJava_com_magic_jni_HelloWorld_DisplayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

好了,现在可以写cpp文件了:
#include <jni.h>
#include <stdio.h>

#include "com_magic_jni_HelloWorld.h"

JNIEXPORT void JNICALLJava_com_magic_jni_HelloWorld_DisplayHello
  (JNIEnv *, jobject)
{
printf("Hello World!(from jni)\n");
}

可以编译了,命令如下:
g++ -dynamiclib -framework JavaVM-I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers -olibHello.jnilib com_magic_jni_HelloJni.cpp 
得到 libHello.jnilib  文件,这个就是java代码中要加载的库。

现在可以执行一下class文件了,执行
sunnymatoMac-mini:test sunny$ javacom.magic.jni.HelloWorld
Hello World!(from jni)
sunnymatoMac-mini:test sunny$ 














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值