делаю игру на си с sdl2. понадобилась функция epoll_create1. но она появилась в android в версии api 21. я в android.mk указываю так.
LOCAL_CFLAGS := -D__ANDROID_API__=21
начинаю компилировать код, а он пишет
<built-in>:350:9: note: previous definition is here
#define __ANDROID_API__ 16
^
/home/cf/projects/build/SDL2-2.0.12/build/com.xverizex.space_travels/app/jni/src/./engine/font.c:188:12: warning: implicitly declaring library function 'wcslen' with type 'unsigned int (const int *)' [-Wimplicit-function-declaration]
int len = wcslen ( text );
^
/home/cf/projects/build/SDL2-2.0.12/build/com.xverizex.space_travels/app/jni/src/./engine/font.c:188:12: note: include the header <wchar.h> or explicitly provide a declaration for 'wcslen'
2 warnings generated.
[x86] Compile : main <= actor.c
In file included from <built-in>:357:
<command line>:4:9: warning: '__ANDROID_API__' macro redefined [-Wmacro-redefined]
#define __ANDROID_API__ 21
^
<built-in>:350:9: note: previous definition is here
#define __ANDROID_API__ 16
^
1 warning generated.
[x86] Compile : main <= button.c
In file included from <built-in>:357:
<command line>:4:9: warning: '__ANDROID_API__' macro redefined [-Wmacro-redefined]
#define __ANDROID_API__ 21
^
<built-in>:350:9: note: previous definition is here
#define __ANDROID_API__ 16
и не написано где это определено. я искал с помощью egrep, но ничего не нашел. что делать?
P.S. я нашел способ, чтобы решить проблему. чтобы всё работало, нужно записать в Application.mk
APP_PLATFORM=android-21
А также записать в файл, который находится в каталоге app проекта - build.gradle. и заменить на 21 api.
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
externalNativeBuild {
ndkBuild {
arguments "APP_PLATFORM=android-21"
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
// cmake {
// arguments "-DANDROID_APP_PLATFORM=android-16", "-DANDROID_STL=c++_static"
// // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
// abiFilters 'arm64-v8a'
// }
}
}