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.
