Мне нужно использовать готовый C++ класс Catalog. Используя статью сделал начальную настройку проекта. MainActivity
:
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText("C++ bool = " + getTestBool());
}
public native boolean getTestBool();
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
add_library(
native-lib
SHARED
native-lib.cpp )
add_library(
catalog
SHARED
catalog.cpp )
find_library(
log-lib
log )
target_link_libraries(
native-lib
${log-lib} )
target_link_libraries(
catalog
${log-lib} )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
native-lib.cpp:
#include <android/log.h>
#include <jni.h>
#include <string>
#include "string.h"
#include "catalog.h"
extern "C"//При експорте функций имена их не будут изменятся
JNIEXPORT jboolean JNICALL
Java_ru_artem_ndktest2_MainActivity_getTestBool(
JNIEnv *env, //указатель на объект, представляющий из себя JNI-окружение
jobject) { //класс, которому принадлежит объявление нативного метода в Java. Фактически это this)
Catalog cat;
return cat.getResult();
}
catalog.h:
#ifndef DBADAPTER_H
#define DBADAPTER_H
#include <list>
#include <set>
#include <map>
#include <unordered_map>
#define DISABLE_SEARCH_BY_WORD
class Catalog
{
public : //slots
bool getResult();
};
#endif // DBADAPTER_H
catalog.cpp:
#include "catalog.h"
using namespace std;
bool Catalog::getResult() {
return true;
}
Но получаю ошибку при вызове метода find:
Error:(27) undefined reference to `Catalog::getResult()'
Как её исправить? Ссылка на весь мини проект.
UPD Упростил и добавил дополнительный код
Не знаю на сколько верно я сделал, но все файлы отлично подключились следующей командой в CMakeList:
add_library(
native-lib
SHARED
native-lib.cpp classes/catalog.cpp headers/catalog.h)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Некоторые веб-камеры снимают в перевёрнутом режимеВ программе нужно переворачивать такие камеры
Наведите пожалуйста на материалы или подскажите какие изучить функцииНужно после клика по кнопке одно всплывающее окно закрыть и открыть...
Использую local storage для сохранения игры, cобираюсь сохранить массив, но ему нужны начальные значения неравные нулю, как осуществить?