J'essaie d'obtenir un programme SDL super simple pour fonctionner. J'utilise Mac OS X Lion. J'ai SDL pour travailler dans Snow Leopard, mais cela ne semble pas vouloir travailler à Lion. Jusqu'à présent, j'ai ceci:
Undefined symbols for architecture x86_64: "_main", referenced from: start in crt1.10.6.o (maybe you meant: _SDL_main) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
4 Réponses :
L'en-tête SDL Files redéfinissez mais c'est bien. SDL fournit sa propre fonction Si votre projet est basé sur le cacao, vous avez probablement oublié d'inclure Main code> avec une macro. Ceci est dans sdl_main.h:
principale () code> qui appelle ensuite votre version. Alors éloignez-vous de ceux qui définissent, ils ralentissent pire, pas mieux. P>
sdlmain.m code> dans votre projet. Ceci fournit une fonction
MAIN (CODE> MAIN () CODE> COCOA. Si votre projet est natif C ++, je suppose que vous n'avez pas inclus toutes les libs SDL de votre projet, la liaison ne constate donc pas à SDL
principal () code>. P> p>
Mon projet est C ++. Je vois que #define ligne dans sdl_main.h. Que voulez-vous dire que je n'ai pas nuclété tous les SDL libs? SDL.H, que j'ai inclus, inclut beaucoup d'autres fichiers d'en-tête SDL, donc je devrais avoir ce dont j'ai besoin. Qu'est-ce que j'importer pourrais-je importer? Bien que je ne vois aucun fichier .CPP dans le cadre.
Sdl.h est un fichier d'en-tête, pas une bibliothèque. Le code de SDL est stocké dans une bibliothèque ou un cadre (en fonction de la manière dont vous avez installé SDL). Vous devez ajouter les bibliothèques ou le cadre au projet, de sorte que la liaison puisse obtenir le code SDL.
Eh bien, je pense que je l'ai fait. Sur mon onglet "Build Phases" de Xcode, j'ai SDL.Framework dans la section "Link binaire avec des bibliothèques". L'importateur SDL.H est seulement dans mon fichier principal.cpp. Suis-je censé ajouter le cadre ailleurs?
La façon dont j'ajoute le framework est une entrée dans l'arborescence du projet, avec OpenGL.framework, Foundation.framework, etc. Vous pouvez essayer d'essayer cela, ouc., installez le package SDL_DEVEL à partir du site Web SDL, puis utilisez Xcode Créez un nouveau projet basé sur le modèle SDL et déplacez enfin vos fichiers vers le nouveau projet. J'espère que ça aide.
Désolé d'être si désemparé, mais je ne sais pas ce que l'arbre du projet est. J'ai suivi les instructions ici: Stackoverflow.com/Questtions/3352664/... Je voudrais utiliser le modèle, mais SDL n'a pas de modèles mis à jour pour Xcode 4.
Vérifiez le journal de construction et voyez comment Xcode invoque l'étape de liaison. La commande à la liaison doit inclure une option "-Framework SDL". Vous avez soit ajouté le cadre à la mauvaise cible, soit un autre type d'erreur.
Hmm ... L'option SDL -Framework comprend une bouquet d'autres choses. J'ai réussi à le faire fonctionner en l'exécutant dans la ligne de commande avec g ++ -o sdl \ test MAIN.CPP -Release code> sdl-config --Clags --Libs`` "mais en utilisant
g ++ -O SDL \ Test Main.Cpp -Release -framework SDL Code> Vous avez eu l'erreur Xcode m'a donné. Le résultat de
sdl-config -cflags --Libs code> est
-i / opt / local / include / sdl -d_gnu_source = 1 -d_thread_safe -l / opt / local / lib -lsdlmain - LSDL -WL, -Framework, cacao code>. J'aimerais toujours que cela fonctionne dans Xcode cependant. C'est beaucoup plus gentil.
Avez-vous un cadre SDL installé sur votre système? Peut-être que ce n'est pas là et que vous avez installé les bibliothèques régulières SDL, qui sont clairement installées et fonctionnent. La méthode «SDL-CONFIG» lient les liens contre les Libs SDL ordinaires, pas le cadre SDL. Vous pouvez ajouter les options de la ligne SDL-CONFIG sur votre projet Xcode et tout fonctionnera. Si vous souhaitez que le projet Xcode utilise le cadre SDL, vous devrez déterminer pourquoi le linker ne trouve pas le cadre.
J'ai des travaux sdl.frame dans les deux / bibliothèques / cadres et, comme cela ne fonctionne pas, je l'ai essayé dans ~ / Bibliothèque / Cadres, mais non plus. C'est tout ce que j'ai besoin de faire pour installer le cadre, non?
sdl.h n'inclut pas sdl_main.h
La première ligne de votre fichier devrait être la suivante: sdl_main redéfinit la fonction principale, puis sa propre initialisation est requise pour obtenir SDL fonctionnant avec OS X P> lors de la compilation , vous devrez également créer un lien dans Libsdlain en plus de libsdl p> p>
Cela ne change rien pour moi, mais je ne comprends pas vraiment la liaison de Libsdlmain. J'utilise un cadre (Mac OS 10.7) et, en outre, mon SDL.H comprend SDL_MAIN.H.
Si vous utilisez le cadre SDL, vous devez simplement ajouter les fichiers sdlmain.h et sdlmain.m à votre projet (en supposant que vous avez déjà ajouté SDL.Framework sur votre projet). P>
Vous trouvez ces fichiers dans le dossier "Devel-Lite" du SDL DiskImage, que vous pouvez télécharger ici: http://www.libsdl.org/release/sdl-1.15.dmg p>
Ces deux fichiers vous donneront une routine principale conviviale de cacao, de sorte que votre application SDL peut être une application OS X bien comportant X. P>
J'ai eu la même erreur de temps de liaison que OP pour une application pure C ++ & OpenGL, et les solutions consistaient à utiliser le projet exemple de https://github.com/ricket/hellosdl p>
Cela m'a fait ajouter les bibliothèques de cacao mais que aurait été nécessaire de toute façon depuis que je visais l'iPhone. P>
Pouvez-vous fournir la commande émise par XCode pour compiler / relier le programme? (Débarrassez-vous de cette question #Ifdef, BTW)
@BreThale Je ne sais pas comment je trouverais cette commande. Il utilise les valeurs par défaut du modèle de demande de ligne de commande avec C ++ Modifier: pense que je l'ai trouvé: Pastebin.com/zprm01kp