Un framework ne fonctionne pas, il semble y manquer "l'executable".

HerveHerve Membre

Bonjour,


 


J'ai besoin de lier le framework iOS/AudioUnit à  mon projet. Le compilateur dit ne pas le trouver alors que le framework en question s'affiche bien dans le projet et que l'option "afficher dans le finder" fonctionne parfaitement. 


 


Quel peut être le problème?


J'ai noté que par rapport aux autres framework (qui fonctionnent), il y manque un fichier "executable" (celui avec l'icône de Terminal). Serait-ce la source d'erreur? Comment réparer dans ce cas? Il n'y a plus d'installateur pour XCode dorénavant. Ou bien quelqu'un peut-il m'adresser cet executable que je ferai glisser?


 


Remarque : certains parlent de XCode6. Où donc est cette nouvelle version? (sur le MAS ou le site d'Apple pour les développeurs, c'est encore la 5.1.1)


Réponses

  • AliGatorAliGator Membre, Modérateur

    J'ai besoin de lier le framework iOS/AudioUnit à  mon projet. Le compilateur dit ne pas le trouver alors que le framework en question s'affiche bien dans le projet et que l'option "afficher dans le finder" fonctionne parfaitement. 
     
    Quel peut être le problème?

    Le framework n'est peut-être pas dans le "Framework Search Path" des Build Settings de ton projet ?

    Remarque : certains parlent de XCode6. Où donc est cette nouvelle version? (sur le MAS ou le site d'Apple pour les développeurs, c'est encore la 5.1.1)

    XCode 6 est en Beta. Il n'est pas sur le MAS (encore heureux, vu que c'est une beta), mais sur developer.apple.com. Suffit d'aller dans la section / l'onglet "iOS8 Beta" du dev center plutôt que de rester sur l'onglet "iOS7" sélectionné par défaut. Comme à  chaque fois qu'Apple fait des betas après les WWDC en fait ;)
  • HerveHerve Membre

    Merci AliGator pour ta réponse.


    Tous les frameworks, y compris ceux qui sont correctement chargés sont là  :


     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks


     


    Dans le  "Framework Search Path", il y a écrit :


    $(inherited) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include


     


    dossier dans le quel il n'y a pas de framework...


    Par acquis de conscience, j'ai mis le lien vers le dossier des framework, mais le problème demeure.


    Le message est :


    ld: framework not found AudioUnit


    clang: error: linker command failed with exit code 1 (use -v to see invocation)


     


    C'est vraiment problématique, mon audioGraph ne fonctionne pa du coup. (le reste des framework audio, comme AudioToolbox ou CoreAudio semblent être normalement chargés).


     


    A t-on une idée de ce à  quoi pourrait servir le fichier exécutable manquant? Lorsque j'exécute les autres dans Terminal, ils n'affichent que les chemins vers les fichiers...

     


  • AliGatorAliGator Membre, Modérateur
    Le fichier que tu appelles "exécutable" qui est le fichier avec l'icône du terminal... bah c'est un peu le fichier principal. C'est le binaire compilé de la lib.

    Un framework c'est un bundle structuré comprenant : des headers, la librairie (statique ou dynamique, mais donc du code binaire compilé au final), et d'éventuelles ressources (images, etc).

    Par contre je ne connais pas trop AudioUnit (j'ai pas fait mumuse + que ça). Si ça se trouve c'est normal qu'il n'ait pas de lib, si c'est juste un umbrella framework qui n'est en fait qu'un wrapper qui référence d'autres frameworks. Mais c'est vrai que c'est très étonnant qu'il n'y ait pas de binaire quand même, d'autant plus étonnant que pour la version OSX du AudioUnit.framework, lui il en a un par contre...
  • AliGatorAliGator Membre, Modérateur
    http://stackoverflow.com/questions/1756212/framework-not-found-audiounit

    Sous iOS c'est CoreAudio qu'il faut utiliser et pas AudioUnit il semblerait...

    En tout cas vu que AudioUnit.framework n'a pas de librairie/binaire dans son framework, ça n'a en effet pas de sens de le mettre dans "Link Binary With Libraries" puisqu'il n'y a pas de library à  linker pour son cas... donc l'erreur du linker (ld) est en effet logique, il cherche la librairie qui devrait se trouver dans "AudioUnit.framework/AudioUnit" et il n'y en a pas, donc il ne voit pas quoi linker comme librairie avec ton binaire.

    Après du coup pourquoi sous iOS y'a que des headers et pas de lib, au lieu d'enlever complètement le framework (et soit ne pas implémenter AudioUnit, soit redispatcher ses fonctionnalités dans d'autres frameworks comme CoreAudio ou autre) et que le AudioUnit.framework disparaisse totalement du SDK iOS, c'est une autre question... N'ayant jamais travaillé avec AudioUnit et n'ayant donc pas lu leurs Programming Guides & co sur le sujet je ne peux pas dire, mais la réponse doit certainement se trouver là -bas.
  • HerveHerve Membre

    Merci beaucoup Ali pour ces explications. Ce qui m'étonne est que j'ai pu laisser :


     


    #include <AudioUnit/AudioUnit.h>


     


    dans le header sans que cela soit rejeté par le compilateur. J'ai laissé le framework dans la colonne gauche du projet XCode mais en l'enlevant des "Link with binary"...


     


    Le AURenderCallback fonctionne (tests en concole : il est appelé, les valeurs sont correctement calculées) mais je n'ai pas le son par contre lors de la simulation. Cela peut-il venir du simulateur? Du fait que je n'ai pas encore acheté la license iOS? Normalement, le son devrait fonctionner, non?


  • HerveHerve Membre
    juin 2014 modifié #7

    Renseignement pris sur d'autres forums via une recherche, il semble qu'il soit fréquent que le simulateur iOS ne produise pas correctement les sons du projet. Pour l'instant, aucune des solutions rencontrées n'a fonctionné...


Connectez-vous ou Inscrivez-vous pour répondre.