有个例子最好了

解决方案 »

  1.   

    1,jni调用;
    2,system执行os的命令;
    3,利用swig生成调用dll的接口文件(推荐使用)
      

  2.   

    ShowMessage.java 
    public class ShowMessage
    {
        private native void ShowMessage(String msg);
     
        static
        {   
            System.loadLibrary("MsgImpl");
        }
     
        public static void main(String[] args)
        {
            ShowMessage app = new ShowMessage();
            app.ShowMessage("Generated With JNI");
        }
    }[编辑] 编译ShowMessage.java 
    javac ShowMessage.java
    [编辑] 生成头文件ShowMessage.h 
    javah -jni ShowMessage
    生成的头文件如下: /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class ShowMessage */
     
    #ifndef _Included_ShowMessage
    #define _Included_ShowMessage
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     ShowMessage
     * Method:    ShowMessage
     * Signature: (Ljava/lang/String;)V
     */
    JNIEXPORT void JNICALL Java_ShowMessage_ShowMessage
      (JNIEnv *, jobject, jstring);
     
    #ifdef __cplusplus
    }
    #endif
    #endif[编辑] ShowMessage.cpp 
    #include <jni.h>
    #include <stdio.h>
    #include "ShowMessage.h"
     
    extern "C" JNIEXPORT void JNICALL
    Java_ShowMessage_ShowMessage(JNIEnv* env,
    jobject, jstring jMsg)
    {
        const char* msg = env->GetStringUTFChars(jMsg,0);
        print("JNI:%s\n", msg);
        env->ReleaseStringUTFChars(jMsg, msg);
    }[编辑] 生成ShowMessage.dll 
    vc编译方法如下: cl -I %JAVA_HOME%\include -I %JAVA_HOME%\include\win32 -LD ShowMessage.cpp -FeMsgImpl.dll
    [编辑] 运行ShowMessage 
    java ShowMessage
    or java ShowMessage -D java.library.path=[dll存放路径]
    [编辑] 运行结果 
    JNI:Generated with JNI