JNI-вызовы основного кода приложения C ++ из библиотеки Java - PullRequest
0 голосов
/ 16 мая 2018

Я хочу передать данные из Java в C ++ с помощью JNI call. Код C ++, который я хочу вызвать, - это вызов JNI внутри моей основной формы .cpp.

Мне нужно загрузить библиотеку .so моего приложения C ++ на Java, как описывает C ++ Builder, этот .so файл является ProjectOutput (находится в library\lib\armeabi-v7a\.

Я загружаю библиотеку так:

public class McaScanner {

    //private static native void transmitScan(String barcode);  

    static {
        System.loadLibrary("libProjectTest");
    }

    //other static functions
}

До того, как я добавил загрузку этой библиотеки, все работало нормально, и я мог вызывать код Java внутри своего кода C ++ через Delphi Native Interface этого класса Java. Но теперь, когда я вызываю любой метод этого Java-класса, я получаю EJNIFatal exception : "Invocation Error : method not found".

Если я прокомментирую loadLibrary(), это сработает. Что является причиной этой проблемы? Разве этот тип библиотеки не может быть загружен внутри кода Java?

РЕДАКТИРОВАТЬ:

Хорошо, как только я попытался загрузить внутри getInstance() Я увидел проблему с загрузкой. "lib" уже был добавлен до "libProjectTest", поэтому я не должен был добавлять его сам.
Но теперь я получаю сообщение об ошибке:

No implementation found for void com.scanner.McaScanner.transmitScan(java.lang.String) (tried Java_com_scanner_McaScanner_transmitScan and Java_com_scanner_McaScanner_transmitScan__Ljava_lang_String_2)

То есть, теперь приложение вылетает, когда до этого не было такой же ошибки.

Реализация моего вызова JNI в C ++ в com.embarcadero.ProjectTest: (Мой класс Java находится в com.scanner.McaScanner)

extern "C"
JNIEXPORT void JNICALL Java_com_scanner_McaScanner_transmitScan(JNIEnv *env, jobject obj, jstring barcode) {}

РЕДАКТИРОВАТЬ:

Может быть проблема в том, что я пытаюсь загрузить библиотеку, которая уже используется в памяти?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...