Problème d'import, de framework??

olivier555olivier555 Membre
13:42 modifié dans API AppKit #1
Bonjour!
Je cherche à  faire un petit synthé avec CoreAudio. J'ai réalisé un AUGraph basique avec un synthé, une mixette et un output. Je génère des évènements MIDI de la manière suivante :

<br />MusicDeviceMIDIEvent(synthUnit, 0x90, 62, 127, 0);<br />sleep(1);<br />


Le problème lorsque je compile est qu'il y a une erreur sur la ligne sleep(1) : "error: 'sleep' was not declared in this scope".
De plus, losque je supprime cette ligne (oui je sais, c'est la facilité ;) ), la fonction MusicDeviceMIDIEvent ne produit aucun son. Je n'ai pas initialisé d'instrument, mais j'ai lu que par défaut on est sur le piano.
Est-ce que j'ai oublié d'importer un header ou un framework? Dans mon projet, j'ai inclus les framework CoreMIDI, CoreAudio, AudioToolbos et AudioUnit. En entête de ma classe, j'ai inclus :

<br />#include &lt;CoreAudio/CoreAudio.h&gt;<br />#include &lt;AudioToolbox/AudioToolbox.h&gt;<br />#include &lt;AudioUnit/MusicDevice.h&gt;<br />


Si vous avez une idée du problème, même une piste obscure, je suis preneur. Merci beaucoup!!

Réponses

  • wiskywisky Membre
    septembre 2005 modifié #2
    Salut,
    Dans ton .h de ta classe tu a bien ça: [tt]#import <Cocoa/Cocoa.h>[/tt]

    [edit]
    Ajoute ça dans tes includes:
    #include &lt;unistd.h&gt;
    

    [/edit]

    Pour le reste je ne sais pas, désolé ;)
  • olivier555olivier555 Membre
    13:42 modifié #3
    Génial, le sleep marche avec
    <br />#include &lt;unistd.h&gt;<br />
    


    Merci beaucoup!

    Par contre, je n'ai toujours aucun son. Quelqu'un a t-il des infos?
  • olivier555olivier555 Membre
    13:42 modifié #4
    En fait je me suis embrouillé dans mes connections d'Audio Unit, c'est normal que ça marchait pas.
  • olivier555olivier555 Membre
    13:42 modifié #5
    Bon alors là , j'ai un énorme problème.
    Je mets tous les include et j'inclus les framework audio au projet, tout marche, c'est cool. Ensuite, je change une ligne d'un fichier du projet, même un truc à  la con, genre je mets une ligne en commentaire, et là  lors de la compilation de ce source j'ai genre 7000 erreurs (!) concernant des headers Apple que le compilateur définit 2 fois. Alors qu'avant tout marchait parfaitement!! Je supprime ma modif et le problème subsiste... J'enlève les frameworks du projets et idem, ça compile toujours pas. Je pense que c'est pas possible de trouver une solution comme ça à  distance mais si vous avez une idée sur la cause du problème, ça m'aiderait énormément, parce que là  je pète les plombs!!! :crackboom:-
    Merci énormément!
  • ChachaChacha Membre
    13:42 modifié #6
    Tu peux donner un petit bout du log d'erreur, que je me fasse une idée ?
    ça t'arrive pas d'inclure des fichier .c ou .m avec la commande import, par hasard ?

    +
    Chacha
  • olivier555olivier555 Membre
    13:42 modifié #7
    oui c'est genre ça :

    <br />/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:64: error: multiple definition of &#39;enum _NSComparisonResult&#39;<br />/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:67: error: previous definition here<br />/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:64: error: conflicting declaration &#39;NSOrderedAscending&#39;<br />/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:67: error: &#39;NSOrderedAscending&#39; has a previous declaration as &#39;_NSComparisonResult NSOrderedAscending&#39;<br />/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:64: error: conflicting declaration &#39;NSOrderedSame&#39;<br />/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:67: error: &#39;NSOrderedSame&#39; has a previous declaration as &#39;_NSComparisonResult NSOrderedSame&#39;<br />/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:64: error: conflicting declaration &#39;NSOrderedDescending&#39;<br />/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:67: error: &#39;NSOrderedDescending&#39; has a previous declaration as &#39;_NSComparisonResult NSOrderedDescending&#39;<br />/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:66: error: conflicting declaration &#39;NSNotFound&#39;<br />/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:69: error: &#39;NSNotFound&#39; has a previous declaration as &#39;&lt;anonymous enum&gt; NSNotFound&#39;<br />
    


    Ceci n'est qu'une infime partie des erreurs affichée (environ 7000) prise au hasard.
    Sinon je crois n'avoir inclus que des fichiers .h... Merci
  • ChachaChacha Membre
    13:42 modifié #8
    Bon, il semble bien que d'une manière ou d'une autre, les fichiers .h se retrouvent incluent deux fois...
    Tu utilises bien #import et pas #include ?

    +
    Chacha
  • olivier555olivier555 Membre
    13:42 modifié #9
    En fait, j'ai pris l'habitude de faire include pour les fichier C++ et import pour les Objective-C.... Dois-je tout remplacer??
  • wiskywisky Membre
    13:42 modifié #10
    le problème est que dans les fichier .h que tu #import, il y a des #include.

    Donc si tu #include in fichier .h qui est #include dans l'un des fichiers que tu #import ça pose problème.

    Tu arrive à  ma suivre?
    ça tombe bien pas moi :-P
  • olivier555olivier555 Membre
    13:42 modifié #11
    Oui je crois comprendre. Mais je suis pas sûr. Concretement, je dois tout #importer alors?
  • wiskywisky Membre
    13:42 modifié #12
    oui sauf pour les .h des fonctions C (comme [tt]sleep()[/tt]) que tu inclu.
  • ChachaChacha Membre
    septembre 2005 modifié #13
    dans 1125669596:

    En fait, j'ai pris l'habitude de faire include pour les fichier C++ et import pour les Objective-C.... Dois-je tout remplacer??

    A priori, non, tu ne dois pas remplacer... Si tu as bien fait des import pour les fichiers des frameworks qui semblent poser problème, il ne devrait pas y avoir ces multiples inclusions...
    (pour ceux qui se demandent, avec les #include, en C, il faut faire des gardes de compilation à  base de #ifndef pour éviter les inclusions multiples. le #import sait faire ça tout seul).

    Bon, je n'ai pas d'autre idée pour le moment. Embêtant, ça.

    [edit]
    en plus, ça m'étonnerait que tu importes explicitement les headers de Foundation, donc le problème doit être ailleurs.
    Mf. Je cherche. Tu ne peux pas nous filer une capture d'écran du "source tree" de ton projet (panneau de gauche), pour voir quelles sont les resources, les headers, les frameworks, et comment ils ont l'air d'être agencés ?
    [/edit]
  • olivier555olivier555 Membre
    13:42 modifié #14
    OK merci les gars. Effectvement Chahcha, c'est bien ce que je pensais. Je vais qhand même essayer de remplacer, on sait jamais...
    Ca fait 2 jours que je suis bloqué à  cause de ça!  :crackboom:-
  • olivier555olivier555 Membre
    13:42 modifié #15
    Bon j'ai tout remplécé mais ça change rien! :'(
  • olivier555olivier555 Membre
    13:42 modifié #16
    Chacha, je t'ai envoyé le source tree du projet par mail (je peux pas mettre l'image sur un serveur là ..).
  • olivier555olivier555 Membre
    13:42 modifié #17
    Je crois avoir trouvé! En tout cas pour l'instant ça marche!
    En fait, j'ai fait un lien du type

    <br />IBOutlet id lecteurAudio<br />
    


    J'airemplacé ça par

    <br />IBOutlet AudioController *lecteurAudio<br />
    


    et j'ai mis en entête #import "AudioController.h". Là  en tout cas ça compile. Mais alors si c'est vraiment ça, quel lien avec le fait que certaines classes soient définies 2 fois sans ce #import et maintenant elle ne sont définies qu'une fois? Au contraire, j'en rajoute un, c'est plutôt contradictoire non?
  • olivier555olivier555 Membre
    13:42 modifié #18
    Déception, ça re-plante......
Connectez-vous ou Inscrivez-vous pour répondre.