JNI HelloJava

    技术2025-10-24  14

    一,编写HelloJava.java, 声明一个native method

    package com; public class HelloJava { private native void print(); public static void main(String args[]) { new HelloJava().print(); } static { System.loadLibrary("HelloJava"); } }

    二,进入"src/"目录,执行javac com/HelloJava.java,生成HelloJava.class

     

    三,执行"javah -jni com.HelloJava 生成com_HelloJava.h

    /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_HelloJava */ #ifndef _Included_com_HelloJava #define _Included_com_HelloJava #ifdef __cplusplus extern "C" { #endif /* * Class: com_HelloJava * Method: print * Signature: ()V */ JNIEXPORT void JNICALL Java_com_HelloJava_print (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif

     

    三,编写HelloJava.c

    #include <jni.h> #include <stdio.h> #include "com_HelloJava.h" JNIEXPORT void JNICALL Java_com_HelloJava_print (JNIEnv *env, jobject obj) { printf("hello java!"); return; }

     

    四,执行 cl -Ic:/java/include -Ic:/java/include/win32 -MD -LD HelloJava.c -FeHelloJava.dll

    生成HelloJava.dll

     

    五,执行java com.HelloJava

    成功显示hello java! 若执行失败,显示RutimeError R6034则这是vc的问题。

    需要执行mt.exe -manifest HelloWorld.dll.manifest -outputresource:HelloWorld.dll;2

    详见:http://msdn.microsoft.com/zh-cn/library/ms235591(VS.80).aspx

     http://blog.sina.com.cn/s/blog_70584b480100lj5i.html

    最新回复(0)