Проблема такая, пытаюсь разобраться в JNI, но при запуске вылетает ошибка:
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNItest.printHelloWorld()V
at JNItest.printHelloWorld(Native Method)
at Main.main(Main.java:10)
Код пишу в IntelliJ IDEA.
Код JNItest.java:
public class JNItest {
static {
System.load("F:/Android/Projects/three/bin/hello.dll");
System.out.println("library loaded successfully");
}
native void printHelloWorld(); }
Код main.java:
public class Main {
public static void main(String[] args) {
System.out.println("Работает на андроиде!");
JNItest p = new JNItest();
p.printHelloWorld();
}
}
JNItest.h:
#include <jni.h>
/* Header for class JNItest */
#ifndef _Included_JNItest
#define _Included_JNItest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNItest
* Method: printHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JNItest_printHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
JNITest.cpp:
#include <jni.h>
#include <iostream>
#include "JNITest.h"
JNIEXPORT void JNICALL Java_JNItest_printHelloWorld
(JNIEnv *, jobject) {
std::cout << "Hello C";
}
Вроде бы все сделано верно. При запуске вижу:
Работает на андроиде!
Exception in thread "main" java.lang.UnsatisfiedLinkError:
JNItest.printHelloWorld()V
at JNItest.printHelloWorld(Native Method)
at Main.main(Main.java:10)
library loaded successfully
И что с этим делать? Вроде бы есть похожие вопросы, но способы решения ко мне не подошли. Спасибо!