誰かがこれについて私を助けてください。
私は、ndkを使用して、Androidで階乗を実行する単純なアプリに取り組んでいます。
2つの.cppファイルが必要です。1つはクラス階乗用で、もう1つはそのクラスからメソッドを呼び出すメインになります。ビルドに関してヘッダーの問題に対処する方法がわかりません。助けてください。
#include "com_lan_factorial_FacLib.h"
JNIEXPORT jlong JNICALL Java_com_lan_factorial_FacLib_fac
(JNIEnv *env, jclass clazz, jlong n)
{
jlong result = (jLong) (fac(n));
return result;
}
このコードはfacメソッドを呼び出します。これはMain.cppです
#include <stdio>
#include "com_lan_factorial_FacLib.h"
long fac(long n)
{
long f = 1;
long i;
for(i = 1; i <= n; i++)
{
f *= i;
}
return f;
}
}
このクラスはfacメソッドを作成します。これはfac.cppです
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS := -Wno-psabi
LOCAL_MODULE := libfac
LOCAL_SRC_FILES := fac.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_CFLAGS := -Wno-psabi
LOCAL_MODULE := FacLib
LOCAL_SRC_FILES := Main.cpp
LOCAL_STATIC_LIBRARIES := libfac
include $(BUILD_SHARED_LIBRARY)
コンパイルログは次のとおりです。
C:\Users\Lan\workspace\Factorial>..\..\temp\android\android-ndk-r8b\ndk-build
"Compile++ thumb : FacLib <= Main.cpp
jni/Main.cpp: In function 'jlong Java_com_lan_factorial_FacLib_fac(JNIEnv*, jclass, jlong)':
jni/Main.cpp:7:30: error: 'fac' was not declared in this scope
make: *** [obj/local/armeabi/objs/FacLib/Main.o] Error 1
facが宣言されていない理由がわかりません