Я портирую на SDL2 и платформу Android игру C ++, использующую SDL 1.2. Пока все шло хорошо, за исключением одного: когда я пытаюсь получить доступ к полям SDL_Window, компилятор сообщает мне
error: invalid use of incomplete type 'SDL_Window {aka struct SDL_Window}'
Я думаю, что моя установка SDL может быть неисправна. Я скомпилировал SDL 2.0.0 из источника, найденного на libsdl.org, с помощью следующей команды:
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk APP_PLATFORM=android-18
Затем я скопировал недавно построенный libSDL2.so
в $ANDROID_TOOLCHAIN/sysroot/usr/lib
и файлы в include/
каталог в $ANDROID_TOOLCHAIN/sysroot/usr/include/SDL
, Эти файлы передаются в CMake и на них ссылается код игры. Мне удалось преобразовать все вызовы SDL, и теперь я застрял с этой проблемой SDL_Window.
Я сделал быстрый поиск в исходном коде SDL и обнаружил, что SDL.h
включает в себя SDL_video.h
который содержит typedef SDL_Window
на struct SDL_Window
, Затем я искал эту структуру и не нашел ничего, кроме как в исходном архиве, в файле с именем src/video/SDL_sysvideo.h
, Поскольку это не файл API, я сомневаюсь, что должен включить его в свой код.
Итак, как найти определение SDL_Window в SDL2 для Android (если это актуально)?
Похоже, что проблема заключается в недостаточном знании API SDL 2. Давайте помнить, что никто не имеет доступа к полям struct SDL_Window
: есть функции для получения размера и флагов окна, такие как SDL_GetWindowFlags а также SDL_GetWindowSize.
Так что проблема абсолютно не связана с установкой SDL или сборок Android. Извините за трату времени, люди в Интернете.
Я ожидаю, что вы должны иметь дело только в указатели объектам SDL_Window, а не помещать в стек полный объект SDL_Window.