Я пытаюсь скомпилировать свой проект с родными c-libs и получить следующую ошибку
/Users/eugene/KREF14001/app/src/main/jni/libC/PulseFilter.c: In function 'shapeMonoGame': /Users/eugene/KREF14001/app/src/main/jni/libC/PulseFilter.c:696:5: error: 'for' loop initial declarations are only allowed in C99 mode /Users/eugene/KREF14001/app/src/main/jni/libC/PulseFilter.c:696:5: note: use option -std=c99 or -std=gnu99 to compile your code
Из этого отчета я обнаружил, что для компиляции моего кода я должен использовать параметр -std = c99 или -std = gnu99, но я не знаю, как это сделать. Пожалуйста, помогите мне.
В файле build.gradle
вашего приложения вы можете добавить cFlags "-std=c99"
в блок ndk
расположенный в блоке defaultConfig
следующим образом:
ndk { moduleName "libblur" abiFilter "armeabi-v7a" stl "gnustl_static" cFlags "-std=c99" ldLibs "log" }
Проблема заключалась в том, что Gradle не использует ваши .mk-файлы, но генерирует их и использует их. Поэтому полезно редактировать Android.mk и Application.mk. Вы можете создать исходный код вручную или отредактировать ndk-раздел build.gradle.