【发布时间】:2012-04-10 12:15:59
【问题描述】:
我有一个头文件 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。 现在除了将这个值从 AAndroid 传递给 JNI 之外,还有一种方法可以直接在 Android java 中#define 一个宏,比如 MACRODEFINED_FROM_ANDROID 语言 for C 这样头文件中就变成了这样:
#ifdef MACRODEFINED_FROM_ANDROID
#define variable x
#elif
#define variable y
#endif
其他解决方案是我将创建两个共享库,一个变量 = x,另一个变量 = y,并在 android 代码中动态加载。
PLz 建议。
Rgds, 索拉布
【问题讨论】:
标签: android c macros java-native-interface