Aide pour développer en C++ sous Mac OS.

Museforever

Membre actif
7 Juin 2007
673
15
Bonjour.

Je suis actuellement en IUT R&T et nous faisons un peu de programmation. Bien sûr, sous Windows ...

Or pour travailler dans de bonne conditions, je suis obligé de rebooter sous windows (pas de virtualisation avec paralells), ce qui commence à m'agacer.

De plus, je peux ouvrir mon programme avec xcode, et je trouve que la présentation est très agréable. J'aimerai donc pouvoir le développer sous Mac OS.

La programmation n'étant pas le but de notre formation, nous restons dans des choses simples et tout nos programmes fonctionnent dans une fenêtre dos. J'utilise habituellement dev C++ pour travailler.

Notre premier programme fut un Pacman, et nous réalisons actuellement un logiciel de traitement d'image basique (pas d'affichage dans la fenêtre, juste des lignes de commande à taper pour les différents traitements (agrandir, supprimer une couleur ...)).

Est-ce donc possible de développer mon programme sous Mac OS et qu'il fonctionne sous Windows ?

Merci !
 
Si tu n'utilises que des librairies qui fonctionnent sur les deux plate-formes, oui.
 
Bonsoir

Tant qu'on en reste aux choses très basiques, on peut développer et exécuter les programmes sous Mac OS X, puis les recompiler et les exécuter sous Windows.

Par contre les limitations sont nombreuses.

Il est inutile de préciser qu'à moins de développer totalement "en aveugle" (sans pouvoir tester), on ne doit pas utiliser l'API Windows, ni même les autres interfaces spécifiques à l'OS de Microsoft (système de fichier, console, accès au matériel, DLL, etc.).

En revanche, ce qui est moins évident, c'est que comme Microsoft a pris l'habitude de ne pas respecter les standards, il ne faut pas non plus s'attendre à pouvoir recompiler un programme créé dans les règles de l'art avec un compilateur de Microsoft (MSVCxx et consort) sans subir quelques incidents.

Mais si je ne m'abuse, Dev-C++ est basé sur Mingw, qui est un portage sous Windows du compilateur GCC qu'on trouve sur Mac OS X. Je ne sais pas ce que cela donne au juste, mais ça paraît plutôt encourageant.

Il faudrait essayer pour voir. (Désolé de ne pouvoir t'en dire plus).
 
Merci pour vos réponses.

Voici les libraires que j'utilise :

#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <myconio.h>
#include <limits>

Je ne sais pas à quoi la dernière sert, je pense que je ne l'utilise pas.

Pascal, tu me parles d'API mais je ne sais même pas ce que c'est donc je ne sais pas si ça peut poser un problème. Je n'utilise pas de dll ou autres, j'ai juste mon fichier cpp avec ton mon programme dedans. Quand je compile sous Windows, ça me fait un .exe. Quand je le lance le programme, il s'ouvre dans une fenêtre de commande (comme quand on tape cmd dans exécuter).

Je me doute que si je le compile avec xcode il ne va pas me sortir un .exe et ne marchera pas sous Windows. Ce que j'aimerai faire, c'est le continuer sous xcode et le tester sous mac os. Une fois que j'aurai complètement terminé mon programme je n'auraii plus qu'à copier le code dans dev c++ pour qu'il me le compile pour Windows.

Je joint mon programme, si quelqu'un aurait la gentillesse de voir s'il est possible de le faire marcher sous Mac OS ça serait très très gentil de sa part !
 
L'include <myconio.h> n'existe pas, mais ne semble pas non plus être utilisé (j'ai donc éliminé la ligne). D'ailleurs, comme je le disais plus haut, ce qui concerne la console poserait probablement des problèmes.

En tout cas, ça compile et ça tourne sous XCode (ou en tout cas ça semble tourner vu le peu que j'ai fait avec, puisque je n'ai pas vraiment regardé toutes les commandes qu'on pouvait entrer au prompt).
 
Merci de ta réponse !

Pour les commandes ce n'est pas un problème je les testerai, déjà le fait que le programme se lance est un grand pas pour moi !

En effet, quand j'ouvre mon fichier .cpp (en double cliquant directement dessus) les options build run et tout sont grisées ! Y'a-t-il quelque chose à faire ?
 
En effet, quand j'ouvre mon fichier .cpp (en double cliquant directement dessus) les options build run et tout sont grisées ! Y'a-t-il quelque chose à faire ?
Dans Xcode, il faut en fait commencer par créer un projet :
- faire menu "File" > "New Project..."
- sélectionner "Command Line Utility"/"C++ Tool" puis faire "Next"
- choisir le nom du projet (et éventuellement changer le dossier dans lequel il sera créé), puis faire "Finish".
Par défaut, le dossier du projet est créé sous le dossier principal du compte (la "maison"
home.png
).


On peut directement éditer le fichier main.cpp créé par défaut en double-cliquant dessus dans la liste. Mais on peut aussi le supprimer et ajouter le fichier qu'on désire en faisant click droit (ou Ctrl+click) sur le dossier des sources dans la barre latérale (à gauche) et faire "Add" > "Existing Files..." et en choisissant son fichier, de préférence préalablement recopié dans le dossier du projet (c'est plus propre que d'en mettre partout).
 
Pour lancer la compilation et vérifier les erreurs, il suffit de cliquer sur le bouton "Build".

Pour compiler puis exécuter le programme dans une console XCode, il faut cliquer sur le bouton "Build and Go".
 
Ok maintenant je peux compiler !

Le problème est qu'il me fait des erreurs : -myconio.h (je l'ai donc supprimée).

Ensuite j'ai eu un problème dans les 2 dernières fonctions, parce que je déclarais 2 fois les mêmes variables (i et j, une fois au début et une fois dans la boucle).

Maintenant il m'indique qu'il y a 4 erreurs, mais je ne sais pas où elles sont ! Je n'ai aucun message qui apparaît dans la fenêtre pour coder ...

Edit : Ok c'est bon j'ai trouvé, j'avais supprimé les & dans les paramètres des fonctions après le main mais pas dans les prototypes.

Le programme compile bien, mais quand je fais build and go j'ai une fenêtre qui s'ouvre, avec marqué "stop executable" et dedans il y a le nom de mon projet.

Edit 2 : Okayy j'ai trouvé ! Fallait juste cliquer sur la petite fenêtre noir au dessus du code ...

Enfin, je n'ai plus besoin de retourner sous Windows pour continuer mon programme, merci !

Petite question : c'est possible d'avoir xcode en français ?
 
Car je me suis aperçu qu'elles ne servaient à rien, on ne réutilise pas les modifications apportées en dehors de la fonction.

Ensuite pour l'anglais, j'ai un bon niveau, mais bon en français c'est toujours plus agréable.
 
Encore besoin d'aide !

Lorsque je teste mon programme, je fais build and go, ça ça marche nickel.

Sauf que parfois, j'oublie de stopper le programme et modifie le code directement. Donc quand je refais build and go, il m'ouvre une fenêtre qui me propose de fermer l'ancien programme. Je clique donc sur OK, et là il me dit que le projet n'a pas pu être sauvegardé (j'ai mis la sauvegarde automatique pour ne pas avoir à cliquer à chaque fois sur save).

Et une fois que cela est arrivé, impossible de recompiler ou de sauvegarder mon programme, il me sort cettee erreur. Et je n'ai pas d'autre solution que de relancer xcode ...

Je fais certainement mal quelque chose, mais quoi ?
 
Encore besoin d'aide !

Lorsque je teste mon programme, je fais build and go, ça ça marche nickel.

Sauf que parfois, j'oublie de stopper le programme et modifie le code directement. Donc quand je refais build and go, il m'ouvre une fenêtre qui me propose de fermer l'ancien programme. Je clique donc sur OK, et là il me dit que le projet n'a pas pu être sauvegardé (j'ai mis la sauvegarde automatique pour ne pas avoir à cliquer à chaque fois sur save).

Et une fois que cela est arrivé, impossible de recompiler ou de sauvegarder mon programme, il me sort une erreur. Et je n'ai pas d'autre solution que de relancer xcode ...

Je fais certainement mal quelque chose, mais quoi ?

normale un coup a prendre pomme +s on the left end hand + never multi tache with xcode
 
alors pourquoi existaient-elles ? :p;)

Parce qu'à l'origine, je modifiais l'image dans le tableau de la structure, et l'utilisateur devait après appeler une autre fonction pour sauvegarder l'image. Comme je suis fainéant, j'ai ajouté une ligne à la fin de la fonction pour qu'elle sauvegarde l'image directement, sans que l'utilisateur ait à le faire. Et comme ça se fait dans la fonction, plus besoin du passage par référence, donc je l'ai supprimé.


Sinon, je ferai donc attention à bien fermer le programme avant de modifier le code ... Mais bon je pense qu'il doit y avoir un moyen de régler ça, je ne suis certainement pas le 1er à être tombé dans le piège.


Enfin, je viens de me rappeler à quoi sert la bibliothèque myconio.h !

Parfois j'ai besoin d'afficher certaines valeurs du tableau, et comme je ne suis pas superman, j'utilisais la fonction Sleep(1000) qui permettait de mettre en pause le programme pendant 1 seconde, me permettant de lire tranquillement les valeurs et vérifier le bon fonctionnement. Seulement, cette fonction se trouve dans myconio.h (pas myconio). Je me souviens que j'avais du la télécharger et la mettre dans le dossier des librairies de dev c++. Je l'ai ajoutée dans le dossier des librairies de xcode, mais il me sort plein d'erreurs :

Line Location main.cpp:648: error: 'Sleep' was not declared in this scope
Line Location myconio.h:22: error: conio.h: No such file or directory
Line Location myconio.h:27: error: windef.h: No such file or directory
Line Location myconio.h:28: error: winbase.h: No such file or directory
Line Location myconio.h:29: error: wincon.h: No such file or directory
Line Location myconio.h:137: error: myconio.cpp: No such file or directory

Y'a-t-il une autre fonction qui permet de mettre en pause le programme pendant un certain temps ?

Merci !
 
Y'a-t-il une autre fonction qui permet de mettre en pause le programme pendant un certain temps ?

Dans le terminal, tu tapes "man 3 sleep" et tu obtiens:
SLEEP(3) BSD Library Functions Manual SLEEP(3)

NAME
sleep -- suspend thread execution for an interval measured in seconds

LIBRARY
Standard C Library (libc, -lc)

SYNOPSIS
#include <unistd.h>

unsigned int
sleep(unsigned int seconds);

DESCRIPTION
The sleep() function suspends execution of the calling thread until either seconds seconds have elapsed or
a signal is delivered to the thread and its action is to invoke a signal-catching function or to terminate
the thread or process. System activity may lengthen the sleep by an indeterminate amount.

This function is implemented using nanosleep(2) by pausing for seconds seconds or until a signal occurs.
Consequently, in this implementation, sleeping has no effect on the state of process timers, and there is
no special handling for SIGALRM.

RETURN VALUES
If the sleep() function returns because the requested time has elapsed, the value returned will be zero.
If the sleep() function returns due to the delivery of a signal, the value returned will be the unslept
amount (the requested time minus the time actually slept) in seconds.

SEE ALSO
nanosleep(2), usleep(3)

STANDARDS
The sleep() function conforms to ISO/IEC 9945-1:1990 (``POSIX.1'').

HISTORY
A sleep() function appeared in Version 7 AT&T UNIX.

BSD February 13, 1998 BSD

;)
 
Donc par exemple, si je veux faire un sleep de 1 seconde, je dois ajouter sleep(1).

Or si je fais ça, j'ai un trait qui clignote, il ne se passe rien.