我正在移植到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.h
,SDL_Window
包含struct SDL_Window
上的typedef src/video/SDL_sysvideo.h
。然后我搜索了这个结构,除了在原始源存档中,在名为{{1}}的文件中没有找到任何内容。由于它不是API的文件,我怀疑我必须将它包含在我的代码中。
那么,如何在SDL2中找到SDL_Window的定义,对于Android(如果这是相关的)?
答案 0 :(得分:5)
看来问题是缺乏对SDL 2 API的了解。让我们记住,我们不会访问struct SDL_Window
的字段:有些函数可以获取窗口的大小和标记,例如SDL_GetWindowFlags和SDL_GetWindowSize。
所以问题绝对与SDL或Android版本的安装无关。对不起浪费时间,网络上的人。
答案 1 :(得分:2)
我希望您只需要将指针交易到SDL_Window对象,而不是实际上在堆栈中放置一个完整的SDL_Window对象。