Question pour un portage Win -> OSX - C++ - Programmation
Marsh Posté le 25-07-2011 à 19:26:10
Bon, déjà j'ai vu qu'il fallait utiliser la fonction "atexit( )" qui permet alors d'appeler la fonction pour la fermeture de la fenêtre & cleanup.
Cela ne résous pas le pb du bouton grisé, mais au moins cela permet de fermer via pomme+Q sans faire tout planter le système...
Marsh Posté le 26-07-2011 à 07:54:38
Bonjour,
J'ai nouveau problème de détecté: quand j'écris des données en binaire sous windows, je n'arrive pas a les lire sous OSX...
Exemple: Pour écrire un entier dans un fichier fichier, je faisais:
Code :
|
Donc tout cela marchait bien sous windows, mais par contre des données écrites sous windows ne sont pas lues correctement sous mac.
Donc j'imagine que c'est un problème dut au fait que un utilise du big endian et l'autre du small endian.
Première question: Il y a-t-il une norme sur l'endianisme (?) quand on écris dans un fichier? Tout dois être en big endian comme pour des données transmises par réseau?
Deuxième question: Du coup, je fais comment moi ? Il y a htons/ntohs, mais je n'écris pas que des entier moi... Et j'imagine que si je planque des float dans des long cela ne va pas marcher... type:
Code :
|
Car je suis pas sur que le mac et win vont représenter les float de la même façon
[edit] Et puis j'imagine que ça va aussi être le drame à cause de mes sizeof(int) qui peuvent retourner tout et n'importe quoi en fonction de la plateforme
C'est quoi la méthode "propre" pour ce problème?
merci
Marsh Posté le 26-07-2011 à 08:43:20
utilise une lib de serialization genre boost.serialization.
Marsh Posté le 26-07-2011 à 11:16:20
Ok, merci.
J'ai fait un petit test vite fait:
Code :
|
Ca marche bien sous windows. J'ai ensuite essayé de lire le fichier binaire sous linux. Mais a la lecture, je me tape une exception:
Citation : terminate called after throwing an instance of 'boost::archive::archive_exception' |
Tu aurai une idée du pb?
Marsh Posté le 26-07-2011 à 21:31:59
Bon, je viens de tester sur mon mac. Cela ne marche pas... Mais j'ai une autre erreur...
Citation : terminate called after throwing an instance of 'boost::archive::archive_exception' |
Du coup, pas trop chaud pour le gros refactoring... Vu que cela ne marche pas mieux entre OS
Marsh Posté le 25-07-2011 à 08:38:39
Bonjour,
Je suis en train de déterrer du code que j'avais fait il y a quelques années. Il s'agit d'un petit loader 3DS, je ne pense pas que l'on puisse l'appeler autrement...
Toujours est-il que je suis en train de le porter sous OSX. J'ai donc remplacé tout mes appels à l'API Win32 par du GLUT. Le reste étant en OpenGl et un peu de Cg, il n'y a aucun pb
J'ai donc réussi à tout porter. Mais mon soucis est que j'ai deux comportement différents entre windows et mac sur la gestion de la fenêtre: sous mac le bouton rouge pour fermer la fenêtre est grisé, mais pas sous windows...
Donc je me demandais si quelqu'un avait une idée de quel était le pb
Pour ceux qui n'ont pas de boule magique, niveau création de fenêtre je prends juste le code de NeHe:
Bon j'ai tout encapsulé dans des classes et tout, mais c'est ça qui se déroule. Je cherche donc s'il n'y a pas une callback a définir spécialement pour OSX ou une option par défaut qui aurai été mise sous windows et pas sous OSX. Je pense que cela soit dût au fait que sous mac le fait de fermer une fenêtre principale n'implique pas nécessairement la fermeture de l'application (contrairement à windows).
Merci
[edit] j'ai renommé le topic, car je vais avoir d'autres questions sur le portage de mon application. Et pas seulement sur GLUT
Message édité par Amonchakai le 26-07-2011 à 07:29:13