1. Напишим код:
public class DemoJNI { static { System.loadLibrary("demojni"); } private native void PrintText(String text); public static void main(String[] args) { new DemoJNI().PrintText("Hello JNI!"); } }
2. Теперь введём команду javac -h . DemoJNI.java, если всё откомпилроволось, вы увидите DemoJNI.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class DemoJNI */ #ifndef _Included_DemoJNI #define _Included_DemoJNI #ifdef __cplusplus extern "C" { #endif /* * Class: DemoJNI * Method: PrintText * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_DemoJNI_PrintText (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif
3. Создадим DemoJNI.C:
#include <jni.h> #include <stdio.h> #include "DemoJNI.h" JNIEXPORT void JNICALL Java_DemoJNI_PrintText (JNIEnv *env, jobject obj, jstring text) { printf("%s", text); }
4. Создадим проект DLL
5. Добавим в проект DemoJNI.c и DemoJNI.h
6. Добавим пути к OpenJDK
7. Откомпилируем
Оно как-бы откомпилиоровалось и работает, но не правильно, проблема в том, что у меня проект не utf-8, а jstring это utf-8.