[Allegro] Créer un projet C++ / Allegro sous Xcode ?

Aurélien-A

Membre confirmé
19 Mai 2005
76
3
42
Edinburgh
www.billou-net.info
Salut,

J'ai un projet C++ graphique à réaliser avec la librairie graphique Allegro.

L'installation sous MacOS X s'est très bien passée. Il existe dans XCode un "template" de projet "Allegro Application" qui contient les framework Allegro, ainsi qu'un main.c.


Projet XCode
Sources: main.c​
Frameworks: Cocoa.framework, Allegro.framework​
Products: Projet.app​

Le code est pré-rempli par un "Hello World" en mode graphique qui marche très bien.

Or, si je renomme main.c en main.cpp, la compilation me provoque des warnings assez désagréables dont voici les détails:

/usr/bin/ld: warning prebinding disabled because (__PAGEZERO segment (address = 0x0 size = 0x1000) of /Users/billou/demoalleg/build/Development/demoalleg.app/Contents/MacOS/demoalleg overlaps with __TEXT segment (address = 0x0 size = 0xc000) of /usr/lib/libgcc_s.1.dylib
/usr/bin/ld: warning prebinding disabled because (__TEXT segment (address = 0x1000 size = 0xa000) of /Users/billou/demoalleg/build/Development/demoalleg.app/Contents/MacOS/demoalleg overlaps with __TEXT segment (address = 0x0 size = 0xc000) of /usr/lib/libgcc_s.1.dylib
/usr/bin/ld: warning prebinding disabled because (__DATA segment (address = 0xb000 size = 0x1000) of /Users/billou/demoalleg/build/Development/demoalleg.app/Contents/MacOS/demoalleg overlaps with __TEXT segment (address = 0x0 size = 0xc000) of /usr/lib/libgcc_s.1.dylib
/usr/bin/ld: warning prebinding not disabled even though (__OBJC segment (address = 0xc000 size = 0x1000) of /Users/billou/demoalleg/build/Development/demoalleg.app/Contents/MacOS/demoalleg overlaps with __LINKEDIT segment (address = 0xc000 size = 0x2460) of /usr/lib/libgcc_s.1.dylib on the assumption that the stripped output will not overlap
/usr/bin/ld: warning prebinding not disabled even though (__LINKEDIT segment (address = 0xd000 size = 0x4000) of /Users/billou/demoalleg/build/Development/demoalleg.app/Contents/MacOS/demoalleg overlaps with __LINKEDIT segment (address = 0xc000 size = 0x2460) of /usr/lib/libgcc_s.1.dylib on the assumption that the stripped output will not overlap


Il se trouve que Je dois réaliser ce projet en C++ et je désire créer un un code portable. Comment dois-je m'y prendre ? Quelles seraient les étapes pour partir d'un projet "vide", les framework à installer ? Sous Windows, avec Dev C++ c'est beaucoup plus simple, il faut juste inclure le fichier "liballeg.a" à la compilation. N'est-il pas possible de procéder ainsi à partir d'un modèle d'application "Command Line C++ tool" ? Il n'est pas possible du tout de programmer en C++ dans un projet qui contient 1 seul appel à Cocoa, dont le code n'est même pas inclus (en gros l'instanciation d'un NSWindow pour afficher le contenu de l'application).

J'ai cherché sur Google et dans la doc mais je ne suis pas beaucoup plus avancé...

PS: J'insiste sur le C++ une orientation objet est exigée dans le projet, mais sans l'utilisation d'un modèle objet propre à un OS.
Aurélien
 
Aurélien-A a dit:
Comment dois-je m'y prendre ? Quelles seraient les étapes pour partir d'un projet "vide", les framework à installer ?
Crée un projet "C++ Tool" et ajoute le framework Allegro : clic-droit sur le projet et Add/Existing framework
Sous Windows, avec Dev C++ c'est beaucoup plus simple, il faut juste inclure le fichier "liballeg.a" à la compilation. N'est-il pas possible de procéder ainsi à partir d'un modèle d'application "Command Line C++ tool" ?
Si c'est possible : clic-droit sur le projet et Add/Existing file ou Get Info et dans l'onglet Build tu ajoutes ce que tu veux dans le paramètre "Other Linker Flag". N'hésite pas à aller faire un tour dans la doc de XCode et tu verras que ce n'est pas un mauvais outils, c'est juste que ça ne fonctionne pas comme Dev C++.
Il n'est pas possible du tout de programmer en C++ dans un projet qui contient 1 seul appel à Cocoa, dont le code n'est même pas inclus (en gros l'instanciation d'un NSWindow pour afficher le contenu de l'application).
Si c'est aussi (tu vois tout est possible :D ) : ça s'appelle l'Objective-C++. Il faut allez voir dans les docs d'Apple pour plus d'explications sur l'interaction C++ / Objective-C. En gros tu crées un projet Cocoa et tu renommes les fichiers *.m en *.mm, et normalement ça roule.
 
Ok je vais tester ça dans la journée, je reviendrai si problème il y a (encore).

Merci.