我很好奇是否有人可以帮助解决我遇到的问题。我刚下载并安装了SDL 2框架,以及随附的示例程序,从Mercurial(http://www.libsdl.org/hg.php)到OSX Mavericks(10.9)。
我正在尝试在Xcode 5.1.1中运行示例本机可可代码,其中包含来自Mercurial中的tests文件夹的文件testnative.h
,testnative.c
和testnativecocoa.m
下载。
我已成功构建程序,但只要它命中函数SDL_CreateWindowFrom(native_window)
,程序就会崩溃并突出显示名为SDL_cocoakeyboard.m
的文件的以下行:
nswindow = ((SDL_WindowData*)window->driverdata)->nswindow; Thread 1:EXC_BAD_ACCESS (code=1, address=0x8)
我对原始文件执行的唯一操作是将SDL.h
和SDL_syswm.h
中的包含标题更改为SDL2/SDL.h
中的SDL2/SDL_syswm.h
和testnative.h
。我在程序中包含了cocoa和SDL2框架,并且我关闭了自动引用计数,这是运行示例代码所必需的。
我不知道在哪里我可能会出错,因为上述行之前的代码看起来并且运行正常(它可以在崩溃之前创建可可窗口)。
对此问题的任何见解都会很棒。提前谢谢!
答案 0 :(得分:0)
评论中我错了,driverdata
是null
(从未初始化),需要使用SDL_cocoawindow.m:SetupWindowData
之类的代码,但SetupWindowData
是static
(不是全局的)并且添加最小化初始化需要SDL_cocoawindow.h
(但不公开)。
所以,我的猜测(也许我错了)这个 testnative 无效,至少没有当前的SDL2(错误的#include
应该是一个标志)但是快速查看SDL2,显示有足够的可可代码,希望有其他方法可以让本机窗口工作。