Я пытаюсь вызвать функцию из c ++ через JNI.Я следовал инструкциям, которые нашел в Интернете, и все еще получаю исключение:
Исключение в потоке "main" java.lang.UnsatisfiedLinkError: \ path \ to \ dll \ remoteAPI.dll: библиотека динамических ссылокСбой процедуры инициализации (DLL)
Путь к файлу DLL правильный, и он там находится.Я добавил путь через VMOptions в IntelliJ через: -Djava.library.path = \ path \ to \ dll
Так почему я все еще получаю исключение?Очевидно, это исключение генерируется, когда DllMain возвращает значение false.Но нужен ли он мне здесь или есть библиотека jni, и если мне нужно ее реализовать, куда мне ее поместить?
entity_remoteAPI.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class entities_remoteAPI */
#ifndef _Included_entities_remoteAPI
#define _Included_entities_remoteAPI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: entities_remoteAPI
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_entities_remoteAPI_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
entity_remoteAPI.cpp
#include <jni.h>
#include "entities_remoteAPI.h"
JNIEXPORT void JNICALL Java_entities_remoteAPI_sayHello
(JNIEnv* env, jobject thisObject) {
}
App.java
public class App
{
public static void main( String[] args ) {
System.out.println( "Hello World!" );
System.loadLibrary("remoteAPI");
RemoteAPI ai = new RemoteAPI();
ai.sayHello();
}
}
entity / RemoteAPI.java
package entities;
public class RemoteAPI {
public native void sayHello();
}