浏览 3119 次
锁定老帖子 主题:java jni的调用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-13
开发环境:aix 本人写了一个测试,步骤如下: 1。新建HelloWorld.java类 public class HelloWorld { static { try { //此处即为本地方法所在链接库名 System.loadLibrary("HelloWorld"); }catch(UnsatisfiedLinkError e){ System.err.println( "不能加载dll文件:\n " +e.toString() ); } }//end static public native void SayHello(String strName); } 2。运行javah HelloWorld 生成HelloWorld.h文件 3.编写helloWorld.c文件 #include <windows.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_SayHello (JNIEnv * env, jobject arg, jstring instring) { const jbyte *str = (const jbyte *)env->GetStringUTFChars( instring, JNI_FALSE ); printf("HelloWorld,%s\n",str); env->ReleaseStringUTFChars( instring, (const char *)str ); return; } int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) { return TRUE ; } 4.编译生成.so cc -I./ -I/usr/include -I/usr/java14/include -o \ libHolleWorld.so -bE:HolleWorld.exp -bnoentry -bM:SRE HolleWorld.c 其中HelloWorld.exp声明符号输出文件,内容如下: Java_HelloWorld_SayHello (注意。操作系统不同,编译生成.so的方法不同) 5.编写方法,在HelloWorld.java中加如下方法 public static void main(String args[]){ HelloWorld hw = new HelloWorld(); hw.SayHello("Christmas"); } 6.运行javac HelloWorld.java 7.运行java HelloWorld.输出如下结果 HelloWorld Christmas 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |