Не найдена реализация для C ++ и Java на NDK - PullRequest
0 голосов
/ 04 мая 2018

Вот мой app/src/main/cpp/rtspinterface.cpp

#include <jni.h>
#include <android/log.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL Java_com_rtsp_RtspInterface_helloWorld(
    JNIEnv *env, jobject thiz) {

   return (*env)->NewStringUTF(env, "Hello from JNI !".c_str());
}

а вот app/src/java/com/rtsp/RtspInterface.java

package com.rtsp;

public class RtspInterface {

    public static native String helloWorld();

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

Я получаю:

no implementation found for Java.lang.String.com.rtsp.RtspInterface.helloWorld() (tried Java_com_rtsp_RtspInterface_helloWorld and Java_com_rtsp_RtspInterface_helloWorld__)

Вот дерево источника в точный момент:

https://github.com/lucaszanella/jscam/tree/8da9d546cbf6ad7cf6551010dbb42e8117d1d72d/src/jscam/android/app/src/main

Я следовал соглашениям об именах отсюда https://developer.android.com/training/articles/perf-jni

Я называю код следующим образом:

Log.v("test", RtspInterface.helloWorld());

1 Ответ

0 голосов
/ 04 мая 2018

Оказывается, я полностью забыл добавить CmakeLists.txt для этого файла cpp. Это просто не компилировалось.

Я сделал

cmake_minimum_required(VERSION 3.4.1)

add_subdirectory("../../../../../myRtspClient/myRtspClient" myRtspClient_bin)

add_library(rtspInterface SHARED rtspInterface.cpp)

target_link_libraries(rtspInterface android log)

и все заработало:)

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