JNI實作-Java 與C的溝通

Java 該如何與C的程式進行溝通 ?!!
JNI 可能是方法之ㄧ
兩個網站的實作, 與大家分享!!…
 
首先, 先寫了一個 HelloWorld.java 的 Java 程式
 
package org.test.jni;
public class HelloWorld {
    public native String sayHello();
    public static void main(String[] args) {
        // System.out.println(System.getProperty("user.home"));
        System.loadLibrary("hellolib");
        HelloWorld helloWorld = new HelloWorld();
        System.out.println("Native Method Said: " + helloWorld.sayHello() );
    }
}
 
接著, 當然是需要 Compiler 它:
javac org/test/jni/HelloWorld.java
 
接著產生後面需要的 Header 檔, 這將會在 該目錄下產生 org_test_jni_HelloWorld.h 檔案
javah -jni org.test.jni.HelloWorld
 
編輯 hellolib.c 的 C語言程式
#include <jni.h>
#include "org_test_jni_HelloWorld.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_org_test_jni_HelloWorld_sayHello(JNIEnv *env, jobject obj) {
 return (*env)->NewStringUTF(env,"Hello world!\n");
}
接著編譯它, 就會產生 hellolib.dll
gcc.exe -Wall -D_JNI_IMPLEMENTATION_ -Wl,–kill-at -shared
 -I "C:\Program Files\Java\jdk1.6.0_11\include"
 -I "C:\Program Files\Java\jdk1.6.0_11\include\win32"
 -o hellolib.dll hellolib.c
 
然後執行測試
java org.test.jni.HelloWorld
 
 
 
 
 
廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s