包括c++预处理器指令在内的代码- Android NDK

Including C++ preprocessor directive in the code - Android NDK

本文关键字:代码 Android NDK c++ 预处理 处理器 指令 包括      更新时间:2023-10-16

StackOverFlow专家你好,

我对Android编程非常陌生,不幸的是,我在Android上的第一个项目涉及到使用c++库。这些是第三方库,必须使用它们。另外,我对c++也不熟悉。我已经成功安装了Android SDK (v4.2.2和APIv 17)和NDK (Android - NDK -r8e)。我能够编译c++代码并构建eclipse项目,并看到应用程序在我的Android设备上运行。

但是今天我知道我必须编译一个c++预处理器指令来使一些功能工作。据我所知,c++预处理器指令是在实际编译代码之前执行的。现在,多亏了google,我了解到执行预处理器指令的方法是修改makeall.sh文件,我做了以下操作:

ARCH="armeabi armeabi-v7a mips x86"
LIBDIR=../../mpcore/lib.android/libs
tmpdir=`mktemp -d /tmp/$0.XXXXX`
for arch in $ARCH; do
 /Users/Desktop/android-ndk-r8e/ndk-build LOCAL_CPPFLAGS:=-DUSE_ORIGINAL_BACKGROUND LOCAL_LDFLAGS=-L$LIBDIR/$arch APP_ABI=$arch
cp libs/$arch/libsample.so $tmpdir/libsample.so.$arch
done
for arch in $ARCH; do
 cp $tmpdir/libsample.so.$arch libs/$arch/libsample.so
done
rm -rf $tmpdir

其中USE_ORIGINAL_BACKGROUND是我的c++指令的名称。

当我运行makeall.sh时,它编译得很好(至少我没有看到任何错误)。然后打开eclipse项目,刷新它,然后构建APK文件。但是,不幸的是,我没有看到预期的结果。

所以我的问题是:我错过了什么吗?我修改makeall.sh的方法听起来对吗?

对不起,如果这个问题对你们来说是非常初级的,但它真的会帮助我学习并在学习Android方面取得进展。提前感谢大家

我修复了这个问题。似乎我需要从库和obj文件夹中删除所有现有编译的c++代码。然后我刷新eclipse项目,将APK文件复制到我的Android设备上,它工作了!!