Я использую NDK в моем приложении для Android.Там не было никаких проблем.Вот код для файла C ++
#include <jni.h>
#include <string>
#include <stdio.h>
extern "C" JNIEXPORT jstring JNICALL
Java_com_examples_core_MyApplication_getKeyJNI(
JNIEnv *env,
jobject /* this */) {
std::string secret_key = "mysecret";
return env->NewStringUTF(secret_key.c_str());
}
Редактировать
Вот мой подход
my native-lib.cpp
#include <jni.h>
#include <string>
#include <unistd.h> // for getcwd()
#include <iostream>
#include <stdio.h>
#include "constants.h"
extern "C" JNIEXPORT jstring JNICALL
Java_com_examples_core_MyApplication_getKeyJNI(
JNIEnv *env,
jobject /* this */) {
std::string secret_key = secret_key;
return env->NewStringUTF(secret_key.c_str());
}
my constants.h
#pragma once
#include <string>
extern const std::string secret_key; // declaration
my constants.cpp
#include "constants.h"
const std::string secret_key = "mysecret"; // definition
Когда яскомпилировать я получаю следующую ошибку
native-lib.cpp:13: undefined reference to `secret_key'