Intégrer librairie C sous xcode

NigokiNigoki Membre
novembre 2009 modifié dans API UIKit #1
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 :

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 ^^

Réponses

  • dilarogadilaroga Membre
    16:22 modifié #2
    Y aurait il moyen de prendre tout ce dossier et d'un faire un gros fichier comme les framework Cocoa ou les dylib ?

    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.
  • NigokiNigoki Membre
    novembre 2009 modifié #3
    J'ai ajouté l'option --enable-shared lors de mon ./configure.

    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 :

    #import <avcodec.h>

    comme je l'ai fait des dizaine de fois avec libsqlite3.dylib en faisant #import <sqlite3.h>
    et j'obtiens

    error No such File or Directory


    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)
  • yoannyoann Membre
    16:22 modifié #4
    C'est moi qui comprend mal où on est entrain de parler de dylib pour de l'iPhone ?
  • ClicCoolClicCool Membre
    16:22 modifié #5
    dans 1258067098:

    C'est moi qui comprend mal où on est entrain de parler de dylib pour de l'iPhone ?

    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 ;) )
  • zoczoc Membre
    16:22 modifié #6
    dans 1258067098:

    C'est moi qui comprend mal où on est entrain de parler de dylib pour de l'iPhone ?

    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).
  • NigokiNigoki Membre
    16:22 modifié #7
    Oui je souhaite utiliser ffmpeg sur l'iphone, ça existe déjà  sur des appli de l'app Store et beaucoup on déjà  bien débroussaillé le problème.

    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
  • dilarogadilaroga Membre
    16:22 modifié #8
    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.

    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 :)
  • AliGatorAliGator Membre, Modérateur
    16:22 modifié #9
    En fait Apple interdit aux programmeurs de rajouter leurs propres frameworks et leurs propres dylib aux applications iPhone, et n'autorise que celles qu'ils ont eux-même intégrées à  l'iPhone (comme SQLite, ou comme tous les frameworks Apple de l'iPhone, ...), et ce surtout (enfin je pense) pour une raison de validation.

    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.
Connectez-vous ou Inscrivez-vous pour répondre.