【发布时间】:2011-02-17 16:51:32
【问题描述】:
我正在使用 OpenGL 和 SDL 编写一些跨平台代码,但在 Mac OSX 上立即遇到了问题。
作为参考,这里是 GitHub 上的代码库:https://github.com/GrooveStomp/platformer
我还将看到的错误推送到同一个 repo:https://github.com/GrooveStomp/platformer/blob/master/errors.txt
现在,从我所做的阅读来看,似乎 SDL 只是简单地包装了 Mac OSX 的 Objective-C Cocoa 层,我需要声明自己的 NSAutoreleasePool 来包装我的整个程序。对吗?
我刚看到这个链接:http://sourceforge.net/apps/wordpress/paintown/2010/12/26/sdl-and-osx/,作者从源代码安装,没有任何问题。我使用 Homebrew 安装,我认为这相当于作者的步骤 #3,因为我必须在构建时指定“-framework OpenGL”。
[编辑]
所以,NSAutoreleaseNoPool() 问题应该通过以下三个步骤来解决:
- main() 应该有这个签名:int main(int argc, char * argv[])
- #include
在 main() 所在的源文件中。 - 与 -lSDLmain 链接
结果是 SDL 将使用 NSAutoreleasePool 和我的 main 包装它自己的 main()。但是,当我这样做时,我会收到此处显示的错误:
https://github.com/GrooveStomp/platformer/blob/master/make_errors.txt
【问题讨论】:
-
OSX 达尔文 10.6.0,SDL 1.2.14
标签: macos opengl sdl nsautoreleasepool