1

我正在将一个使用 SDL 1.2 的 C++ 游戏移植到 SDL2 和 Android 平台。到目前为止一切都很顺利,除了一件事:当我尝试访问 SDL_Window 的字段时,编译器告诉我

error: invalid use of incomplete type 'SDL_Window {aka struct SDL_Window}'

我认为我的 SDL 安装可能有问题。我使用以下命令从 libsdl.org 上的源代码编译了 SDL 2.0.0:

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.hincludeSDL_video.h包含一个 typedef SDL_Windowon struct SDL_Window。然后我搜索了这个结构,除了在原始源存档中的一个名为src/video/SDL_sysvideo.h. 由于它不是 API 的文件,我怀疑我必须将它包含在我的代码中。

那么,如何在 SDL2 中为 Android 找到 SDL_Window 的定义(如果这是相关的)?

4

2 回答 2

5

看来问题在于缺乏对 SDL 2 API 的了解。让我们记住,不访问 的字段struct SDL_Window:有一些函数可以获取窗口的大小和标志,例如SDL_GetWindowFlagsSDL_GetWindowSize

所以这个问题绝对与 SDL 的安装或 Android 版本无关。抱歉浪费了时间,网络的人们。

于 2013-08-27T06:05:50.943 回答
2

我希望您只处理指向SDL_Window 对象的指针,而不是实际上将完整的 SDL_Window 对象放在堆栈上。

于 2013-08-26T22:47:10.933 回答