我試圖用JNI創建一個簡單的示例。我無法編譯.cpp源文件。我會提供我已經完成/嘗試的所有步驟。我想按照這個網址教程:http://java.sun.com/docs/books/jni/html/start.html#27008將C++源代碼編譯爲一個.dll
我有一個名爲HelloJNI.java
public class HelloJNI
{
private native void print();
public static void main(String[] args)
{
new HelloJNI().print();
}
static
{
System.loadLibrary("HelloJNI");
}
}
從這裏Java程序我編譯Java文件,並呼籲
javah -jni HelloJNI
產生HelloJNI.h
從這裏我創建.cpp
源文件
#include <jni.h>
#include <iostream>
#include "HelloJNI.h"
using namespace std;
JNIEXPORT void JNICALL
Java_HelloJNI_print(JNIEnv *env, jobject obj)
{
cout << "Hello JNI!" << endl;
return;
}
現在,我有所有我嘗試創建從源文件的.dll
,我使用這個命令來運行cygwin的GCC(發現這個命令在這裏 - http://www.inonit.com/cygwin/jni/helloWorld/c.html):
gcc -mno-cygwin -I$JAVA_HOME/include -I$JAVA_HOME/include/win32
-Wl,--add-stdcall-alias -shared -o HelloJNI.dll HelloJNI.c
當我這樣做,我得到一個錯誤:
HelloJNI.cpp:1:17: fatal error: jni.h: No such file or directory
compilation terminated.
這是我在哪裏卡住了,我真的不知道乳清中的編譯器不能找到jni.h
它是在$JAVA_HOME/include
目錄。從ls $JAVA_HOME/include
結果:
classfile_constants.h jdwpTransport.h jvmti.h win32
jawt.h jni.h jvmticmlr.h
我知道這是一個漫長的職位,但任何幫助將是真棒。
感謝
感謝您的文章,我會試試這個。 –