0
が、私はアンドロイド上でJavaを使用する.cppファイルを持っている:JNI C++ Androidアプリのクラッシュコール機能
#include<iostream>
#include<jni.h>
jint Java_com_example_gatsj_tutorjatek_MainActivity_Sum(JNIEnv* env, jobject obj)
{
return 5;
}
私はここでそれを使用します。
package com.example.gatsj.tutorjatek;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity
{
public native int Sum();
static
{
System.loadLibrary("TestCPP");
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
int x = Sum();//IF I REMOVE THIS LINE THE APP DOESN'T CRASH
}
}
私はAndroidの中でそれを構築しますGradleとこのCMakeLists.txtを使用しているスタジオ:
cmake_minimum_required(VERSION 3.4.1)
add_library(# Specifies the name of the library.
TestCPP
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/TestCPP.cpp)
私の電話でアプリを起動するとクラッシュします。しかし、私が "int x = Sum();"アプリを起動することができます。
"loadLibrary"と "native"メソッドの部分はコード内にありますが、 "int x = Sum();"アプリがクラッシュすることはありません。
どうすればSum()メソッドを使用できますか?問題の原因は何ですか?