通过JNI在JAVA与C程序中传递参数
来源:互联网 发布:在淘宝开网店流程图 编辑:程序博客网 时间:2024/06/11 20:45
一、编辑Java源文件
=============================================
Hello.java
=============================================
package test;
public class Hello
{
static
{
try
{
//此处即为本地方法所在链接库名
System.loadLibrary("libhello");
}
catch(UnsatisfiedLinkError e)
{
System.err.println( "Cannot load hello library:/n " + e.toString() );
}
}
public Hello()
{
}
//声明的本地方法
public native void SayHello(String strName);
}
=======================================================
ToSay.java
package test;
public class ToSay {
public static void main(String args[]){
Hello hw = new Hello();
hw.SayHello("Christmas");
}
}
=======================================================
二、根据Java源文件生成.h头文件
=======================================================
javac生成Hello.class
javac Hello.java
javah test.Hello生成test_Hello.h->Hello.h
javah test.Hello
=======================================================
三、编辑C/C++文件
=======================================================
Hello.c
#include "Hello.h"
#include <stdio.h>
//与Hello.h中函数声明相同
JNIEXPORT void JNICALL Java_test_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);
return;
}
四、编译生成动态链接库
=======================================================
g++ -I/usr/lib/jvm/java1.5.0/include -shared -o libhello.so Hello.cpp
=======================================================
五、编译根据上述源码建立的Java工程,观察JNI参数传递的效果
- 通过JNI在JAVA与C程序中传递参数
- Java与C之间通过JNI传递中文字符串
- Java与C之间通过JNI传递中文字符串
- Java与C通过JNI指针相互传递
- Delphi利用jni向java程序中传递参数
- JNI中java传递各类型参数给C
- 参数在java程序中如何传递
- java程序中参数值传递与引用传递问题
- JAVA中通过JNI调用C程序实例教程
- JNI中参数的传递与操作
- JNI中参数的传递与操作
- android-jni与java参数传递
- android-jni与java参数传递(续集)
- android-jni与java参数传递
- JNI基础(四)小程序,java调C,并且传递参数
- JNI小程序:Java通过JNI调用C程序
- java通过jni调用C程序
- 做JNI接口其中涉及到参数在C 和JAVA 之间的传递。
- 我的大度把老婆让给了别人!
- C和指针学习笔记 (1)
- 毕业5年决定你的命运 --------值得所有不甘平庸的人看
- ubuntu9.10下amule与firefox终于关联上了,呵呵
- Eval方法和Bind方法的区别?
- 通过JNI在JAVA与C程序中传递参数
- 开心的一天
- csdn
- Tomcat安装配置
- Mono System.DllNotFoundException: gdiplus.dll
- 在Windows下设置NetBeans的C/C++环境
- Apache Rewrite 规则详解
- 不是单组分组函数和不是group表达式
- mono 安装