【问题标题】:Defining a C Macro from the Android Code从 Android 代码定义 C 宏
【发布时间】: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


    【解决方案1】:

    据此,有一些宏可以帮助您测试您是否正在为 android 编译

    http://annoyingtechnicaldetails.wordpress.com/2012/02/01/which-macros-does-the-android-ndk-gcc-define/

    在我的系统上:

    # $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
    

    【讨论】:

      猜你喜欢
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多