请有人帮助我。
我正在开发一个简单的应用程序,使用 ndk 在 android 上进行阶乘。
我想要 2 个 .cpp 文件,一个用于类阶乘,一个是从该类调用方法的主要文件。在构建时我不知道如何处理标题问题,请帮助。
#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