JNI,C++,終於調試通過

第一步,寫hello.java
第二步,執行javac hello.java
第三步,執行javah -jni hello(如果寫成hello.class會報錯),生成hello.h
第四步,創建一個C++的dll,比如叫hello
第五步,將hello.h,jni.h,jni_md.h拷貝到hello工程目錄下,添加進工程裏
第六步,修改hello工程中的hello.h中的#include <jni.h>成#include "jni.h"
第七步,在hello工程中添加hello.cpp,在hello.cpp添加#include "hello.h",把hello.h中的函數聲明拷貝到hello.cpp
第八步,實現功能
第九步,編譯hello生成hello.dll,將hello.dll拷貝到hello.java所在的目錄下
第十步,執行java hello看效果

Java部分代碼如下:
public class hello {
        static {
                System.loadLibrary("hello");
        }

        public native static void test(int s);

        public static void main(String[] args) {
                hello test = new hello();
                test.test(200);
        }
}

如果是包,比如package hellopackage:
建立hellopackage目錄,將hello.java拷貝進去後執行javac hello.java,生成hello.class
注意:需要回到上級目錄,再執行javah -jni hellopackage.hello即可生成hellopackage_hello.h

調試心得:發現錯誤UnsatisfiedLinkError,是頭文件的函數聲明與源文件的函數定義不一樣導致的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章