我有一个头文件header.h,其中变量定义为x。
#define variable X
基于变量x我在c文件中有一个结构y - program.c:
#include header.h
Structure y
{
int val[variable];
.
.
//other elements
}
void func()
{
//here instance of y->val[variable] is used heavily
}
这个c代码(header.h和program.c)是一个JNI代码,我正在创建一个共享库.so并将其加载到Android java代码中。 最近我开始知道我的代码中的一个错误,解决方案是动态地将变量值定义为x。 现在除了将这个值从ANdroid传递给JNI之外,还有一种方法可以直接#define在Android中定义一个宏,用C表示MACRODEFINED_FROM_ANDROID语言 以便在头文件中变成这样:
#ifdef MACRODEFINED_FROM_ANDROID
#define variable x
#elif
#define variable y
#endif
其他解决方案是我将创建两个共享库,其中一个变量= x,另一个变量= y,并在android代码中动态加载它。
PLz建议。
RGDS, SAURABH
答案 0 :(得分:0)
根据这个,有一些宏可以帮助你测试你是否正在为android编译
在我的系统上:
# $CC -dM -E - < /dev/null | grep -i android
#define __ANDROID__ 1
# echo $CC
android-ndk-r7b//toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin//arm-linux- androideabi-gcc --sysroot=platforms/android-9/arch-arm