我有一个头文件 header.h,其中变量定义为 x。
#定义变量X
基于变量 x 我在 ac 文件中有一个结构 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。现在除了将这个值从 AAndroid 传递给 JNI 之外,还有一种方法可以直接在 Android java 中#define 一个宏,比如 C 的 MACRODEFINED_FROM_ANDROID 语言,这样头文件就变成了这样:
#ifdef MACRODEFINED_FROM_ANDROID
#define variable x
#elif
#define variable y
#endif
其他解决方案是我将创建两个共享库,一个变量 = x,另一个变量 = y,并在 android 代码中动态加载。
PLz建议。
Rgds,索拉布