gpt4 book ai didi

android - 在代码中包含 C++ 预处理器指令 - Android NDK

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:48 25 4
gpt4 key购买 nike

您好 StackOverFlow 专家,

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

但是今天我了解到我必须编译 C++ 预处理器指令才能使某些功能正常工作。据我了解,C++ 预处理器指令在实际编译代码之前执行。现在,感谢谷歌,我了解到执行预处理器指令的方法是修改 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 方面取得进步。提前谢谢大家

最佳答案

我已经解决了这个问题。看来我需要从 libs 和 obj 文件夹中删除所有现有的已编译 C++ 代码。然后我刷新了 eclipse 项目,将 APK 文件复制到我的 Android 设备上,它成功了!!!

关于android - 在代码中包含 C++ 预处理器指令 - Android NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17031898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com