我很好奇是否有人能帮我解决一个问题。我刚刚下载并安装了SDL 2框架,以及它附带的示例程序,从Mercurial (http://www.libsdl.org/hg.php)到OSX (10.9)。
我正在尝试运行Xcode 5.1.1中的本地可可代码示例,其中包括来自Mercurial下载中的test文件夹的文件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更改为testnative.h中的SDL2/SDL.h和SDL2/SDL_syswm.h。我在程序中包含了可可和SDL2框架,并且关闭了自动引用计数,这是运行示例代码所必需的。
我不知道我还会在哪里出错,因为前面的代码看起来和运行都很好(它能够在可可窗口崩溃之前创建)。
任何关于这个问题的洞察力都会很好。提前感谢!
发布于 2014-08-27 14:31:57
我在评论中错了,driverdata是null (从未初始化),一些代码(比如SDL_cocoawindow.m:SetupWindowData )是必需的,但是SetupWindowData是static (不是全局的),添加最小的初始化将需要SDL_cocoawindow.h(但不是公共的)。
所以,我的猜测(也许我错了)这个测试本机不起作用,至少对于当前的SDL2 (错误的#include应该是一个标志),但是快速查看SDL2显示,有足够的可可代码希望有其他方法可以使本机窗口正常工作。
良好的开端-- 如何在Xcode 4中为OS设置SDL 2项目
https://stackoverflow.com/questions/23836698
复制相似问题