Включение директивы препроцессора C++ в код — Android NDK

Здравствуйте, эксперты StackOverFlow!

Я очень новичок в программировании для Android, и, к сожалению, мой первый проект в Android связан с использованием библиотек 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. Спасибо всем заранее


person Raj    schedule 10.06.2013    source источник


Ответы (1)


Я исправил проблему. Кажется, мне нужно было удалить весь существующий скомпилированный код C++ из папок libs и obj. Затем я обновил проект eclipse, скопировал APK-файл на свое Android-устройство, и все заработало!!!

person Raj    schedule 10.06.2013
comment
Не могли бы вы задокументировать всю процедуру импорта файлов и классов C++ в исходный код Android? - person Raj Pawan Gumdal; 16.07.2013