0

Проблема такая, пытаюсь разобраться в 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

И что с этим делать? Вроде бы есть похожие вопросы, но способы решения ко мне не подошли. Спасибо!

0 Answers0