私は OpenGL と SDL を使用していくつかのクロスプラットフォーム コードに取り組んでいますが、すぐに Mac OSX で問題が発生しました。
参考までに、GitHub のコードベースは次のとおりです: https://github.com/GrooveStomp/platformer
また、表示されているエラーを同じレポにプッシュしました: 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/著者がソースからインストールし、問題はありません。ビルド時に「-framework OpenGL」を指定する必要があるため、作者のステップ#3と同等であると想定するHomebrewを使用してインストールしました。
[編集]
したがって、NSAutoreleaseNoPool() の問題は、次の 3 つの手順に従って処理する必要があることがわかります。
- main() には次のシグネチャが必要です: int main(int argc, char * argv[])
- main() があるソース ファイルに #include <SDL.h> を追加します。
- -lSDLmain でリンク
その結果、SDL は独自の main() を NSAutoreleasePool でラップし、メイン全体をラップします。ただし、これを行うと、次のエラーが表示されます。
https://github.com/GrooveStomp/platformer/blob/master/make_errors.txt