Intégrer librairie C sous xcode
Hello,
Petite question de débutant :why?:
Je souhaite intégrer la librairie ffmpeg dans un projet xcode et je galère pour l'intégrer sous xcode.
Voici ce que la doc me fournit :
Alors j'ai pris mon xcode j'ai essayer d'inclure avec Add > Existing Files ou Add > Existing Framework, idem pour "Recursively create groups for added folders" ou "Create Folder References for any added folders" mais j'ai toujours un problème à cause des #include dans les fichiers C.
Il est vrai que quand on classe nos .m dans des groups, lors des #include on ne précise pas #include "dossier/fichier.m" or c'est le cas pour tous les #include présent dans mes librairies qui sont sous cette forme.
Y aurait il moyen de prendre tout ce dossier et d'un faire un gros fichier comme les framework Cocoa ou les dylib ? Ou alors j'aurai raté un truc lors de mon import ?
Merci !
Edit : Add > Existing Framework ne permet pas d'ajouter de dossier en fait ^^
Petite question de débutant :why?:
Je souhaite intégrer la librairie ffmpeg dans un projet xcode et je galère pour l'intégrer sous xcode.
Voici ce que la doc me fournit :
You can integrate all the source code of the libraries to link them statically to avoid any version problem. All you need is to provide a 'config.mak' and a 'config.h' in the parent directory. See the defines generated by ./configure to understand what is needed.
Alors j'ai pris mon xcode j'ai essayer d'inclure avec Add > Existing Files ou Add > Existing Framework, idem pour "Recursively create groups for added folders" ou "Create Folder References for any added folders" mais j'ai toujours un problème à cause des #include dans les fichiers C.
Il est vrai que quand on classe nos .m dans des groups, lors des #include on ne précise pas #include "dossier/fichier.m" or c'est le cas pour tous les #include présent dans mes librairies qui sont sous cette forme.
Y aurait il moyen de prendre tout ce dossier et d'un faire un gros fichier comme les framework Cocoa ou les dylib ? Ou alors j'aurai raté un truc lors de mon import ?
Merci !
Edit : Add > Existing Framework ne permet pas d'ajouter de dossier en fait ^^
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Compiler ffmpeg pour avoir les lib de ffmpeg (libavcodec, libavformat, etc...) par defaut je crois que tu auras des lib statiques mais avec l'option --enable-shared tu auras de jolis dylib.
Après le make j'ai bien mes dylib à coté de mes .a, je les ajouter sous xcode en tant que Existing Framework
Je fais :
comme je l'ai fait des dizaine de fois avec libsqlite3.dylib en faisant #import <sqlite3.h>
et j'obtiens
J'ai essayé à peut près toute les syntaxe d'import, et j'ai le même problème si j'importe les librairies statiques (.a)
EDIT : Pour info, j'ai même deux .dylib
- libavcodec.52.dylib (4.6Mb)
- libavcodec.dylib (qui semble être un raccourci, il fait 4Ko)
A mon avis t'as bien lu ;D
Par contre, moi, j'avais même pas remarqué ???
(faut dire que si on jette pas un oeil au titre de la section, c'est pas le titre du thread qui m'aide à voir qu'on cause iPhone ici )
J'ai compris pareil. De plus, là , il va compiler ffmpeg pour processeur intel, donc utilisable uniquement par le simulateur.
Il va falloir également en compiler une version pour processeur ARM, obligatoirement statique (vu que les dylib ne sont pas supportées sur l'iPhone), et c'est une autre paire de manche...
J'ai trouvé CA, mais ça ne marche pas à tous les coups (et d'ailleurs ça ne marche pas avec l'API que je développe pour le boulot).
Voir : http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html
Si les dylib ne sont pas supporté sur iphone, pourquoi la lib SQLite3 est une dylib ? De plus, même avec mes lib static .a, j'ai le même problème.
Ensuite par rapport à la compilation, j'ai bien compiler pour processeur ARM, mais effectivement j'ai essayé de faire tourner ça sur le simulateur...
Bref, déjà j'aimerai pouvoir inclure mes lib compilé pour ffmpeg, après je travaillerai directement sur device, c'est pas grave.
Merci de vos réponses
Ce n'est pas qu'elles ne sont pas supportées le SDK de l'iPhone OS en regorge (dont sqlite3) mais Apple n'autorise pas d'embarquer dans son application des dylib tierces, framework ou autres... Pour les lib statiques je ne savais pas que leur intégration dans un bundle était possible. Je n'arrive plus à trouver la doc pommée où se trouve ces info... si quelqu'un a le lien
Ce serait en effet dur, s'ils permettaient d'utiliser une librairie dynamique, de s'assurer que ton application n'utilise pas ce linkage dynamique pour introduire des trucs qui ne seraient sinon pas passé à la validation : tout ce qui est élément extérieur au programme (plugin, lib dynamique, ...) introduisant de nouvelles fonctionnalités à ton application, et ils ne pourraient pas tester tous les cas (pour s'assurer que tu ne fais pas un truc interdit ou qui ferait du mal aux données de l'utilisateur de l'iPhone, etc) s'il y avait cette porte ouverte.
Donc après oui il y a des frameworks et des dylib dans l'OS de l'iPhone, mais ce ne sont que ceux qu'Apple a installés, en utiliser/installer d'autres n'est pas permis.