7
votes

SDL Video Init provoque une exception sur Mac OS X 10.8

Je viens de porter mon jeu C ++ sur OS X et la première fois qu'il a eu l'exception suivante lorsque vous essayez d'appeler sdl_setvideomode .

2012-09-28 15: 01: 05.437 Scrâchefoids [28595: 707] * Application de terminaison due à une exception non capturée 'NsinternalInconSistencyException', raison: 'Erreur (1000) Création de CGSwindow à la ligne 259' * première pile d'appel de lancer: ( 0 CoreFoundation 0x00007FFF8B53B716 __ExceptionProcession + 198 1 LibobJC.A.DYLIB 0x00007FFF90E30470 OBJC_EXCEPT_THROW + 43 2 CoreFoundation 0x00007FF8B53B4EC + [NSTEXception ROUGE: Format:] + 204 3 AppKit 0x00007FF8A26A579 _nscreatewindowwithopaqueShip2 + 655 4 AppKit 0x00007FFF8A268D70 - [NSWINDOW _COMMONAAWAISE] + 2002 5 AppKit 0x00007FF8A2277E2 - [Nswindow _commonInitFrame: Stylemask: Support: Refer:] + 1763 6 APPLIT 0X00007FF8A22692F - [NSWINDOW _InitContent: STYLEMASK: SUPPORT: DEFER: ContentView:] + 1568 7 AppKit 0x00007FFF8A2262FF - [NSWINDOW INITWITHCONTRECTRECTRECT: STYLEMASK: SUPPORT: DEFER:] + 45 8 LIBSDL-1.2.0.DYLIB 0x0000000107C228F6 - [SDL_Quartzwindow initwithContentrect: Stylemask: Support: reporter:] + 294 9 LIBSDL-1.2.0.DYLIB 0x0000000107C20505 QZ_SETVideomode + 2837 10 LIBSDL-1.2.0.DYLIB 0x0000000107C17AF5 SDL_SETVIDEOMDE + 917 11 Scrasteroids 0x0000000107BE60FB _ZN11SDLGraphics4IniteP6iworldII + 291 ) libc ++ abi.dylib: terminer appelé lancer une exception Abander Trap: 6

Mon code init ressemble à ceci: xxx

Il entre dans ce dernier appel SDL et jette l'exception ci-dessus. Je l'ai essayé dans le mode de fenêtre en plein écran et redimensionnable, même chose.

Je construis mon ancienne école, sur la ligne de commande, par opposition à l'utilisation de Xcode.


0 commentaires

3 Réponses :


6
votes

sdl_main était encore une fois le coupable. My C ++ Main La routine était dans un fichier qui n'inclut pas sdl.h , il n'était donc pas redéfini sur sdl_main . Le code qui inclut sdl est à la place dans une bibliothèque statique réutilisable, aucune routine principale que vous voyez. J'ai modifié manuellement le nom de ma fonction sur sdl_main et cela signifie que SDL fournit la routine principale essentielle. Je n'aime pas faire ça, mais pour le moment, sur sdl 1.2.15 pour Mac, il est nécessaire.

sur Windows, le même nouveau code provoque des conflits de liaison. C'est un nouveau problème.


0 commentaires

0
votes

même problème, mais résolu en reliant libsdlmain (ainsi que libsdl). Cela nécessite à son tour deux cadres: fondation et cacao.

Je n'ai pas renommé la fonction principale.


1 commentaires

Votre fichier principal comprend-il SDL.H? Si oui, votre principal () est renommé pour vous!



2
votes

Il y a des problèmes d'appel de la vidéocole dans le cacao. Donc, vous devez l'initaliser avant d'appeler sdl_setvideomode

Ajoutez la méthode suivante et appelez-la d'abord dans votre méthode principale xxx

`


0 commentaires