Я использовал JNI для вызова простой функции hello world.
JAVA File
public class HelloJNI {
static {
System.loadLibrary("hello");
}
private native void sayHello();
public static void main(String[] args) {
new HelloJNI().sayHello();
}
}
У меня есть файл hello.dll
в том же каталоге.
Я даже добавил каталог в переменную PATH
.
Все еще не работает.
Заранее спасибо.
Ошибка:
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloJNI.sayHello()V
at HelloJNI.sayHello(Native Method)
at HelloJNI.main(HelloJNI.java:9)
Файл C ++:
#include "jni.h"
#include <iostream>
#include "HelloJNI.h"
using namespace std;
// Implementation of native method sayHello() of HelloJNI class
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj){
cout << "Hello World from C++!" << endl;
return;
}
Файл заголовка:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class HelloJNI */
#ifndef _Included_HelloJNI
#define _Included_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloJNI
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloJNI_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif