为什么SDL_Window是不完整的类型?

时间:2013-08-26 21:33:52

标签: android c++ sdl-2

我正在移植到SDL2和Android平台,这是一款使用SDL 1.2的C ++游戏。到目前为止一切顺利,除了一件事:当我尝试访问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.h包含SDL_video.hSDL_Window包含struct SDL_Window上的typedef src/video/SDL_sysvideo.h。然后我搜索了这个结构,除了在原始源存档中,在名为{{1}}的文件中没有找到任何内容。由于它不是API的文件,我怀疑我必须将它包含在我的代码中。

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

2 个答案:

答案 0 :(得分:5)

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

所以问题绝对与SDL或Android版本的安装无关。对不起浪费时间,网络上的人。

答案 1 :(得分:2)

我希望您只需要将指针交易到SDL_Window对象,而不是实际上在堆栈中放置一个完整的SDL_Window对象。