compilation mode "release" n'aboutit pas

RocouRocou Membre
02:30 modifié dans API AppKit #1
Bonjour

Mon application est quasi prête. Elle se compile parfaitement en mode "debug" mais quand j'essaie de passer en mode "release", le compilateur me renvoie l'erreur suivante:
objc[1285]: &#39;/Library/Frameworks/PGSQLKit.framework/Versions/A/PGSQLKit&#39; was not compiled with -fobjc-gc or -fobjc-gc-only, but the application requires GC<br />objc[1285]: *** GC capability of application and some libraries did not match


Que dois-je faire?

Réponses

  • NoNo Membre
    02:30 modifié #2
    dans 1241686093:

    Que dois-je faire?


    Revoir ton application pour ne plus utiliser le garbage-collector comme on te l'a suggéré dans un autre message, ou utiliser une version récente de PGSQLKit qui est compatible GC.
    Car il y a incompatibilité entre le framework PGSQLKit et le runtime GC de Objective-C.

    Ce qui est étonnant, c'est qu'en debug, ça ne râle pas.
    Sans doute encore un mauvais coup du méchant zero-link.
  • RocouRocou Membre
    02:30 modifié #3
    dans 1241688077:

    dans 1241686093:

    Que dois-je faire?


    Revoir ton application pour ne plus utiliser le garbage-collector comme on te l'a suggéré dans un autre message, ou utiliser une version récente de PGSQLKit qui est compatible GC.
    Car il y a incompatibilité entre le framework PGSQLKit et le runtime GC de Objective-C.

    Ce qui est étonnant, c'est qu'en debug, ça ne râle pas.
    Sans doute encore un mauvais coup du méchant zero-link.

    Ha mince!  :'(
    Et si j'utilise la version "debug", je risque quoi?
  • NoNo Membre
    02:30 modifié #4
    dans 1241689030:

    Et si j'utilise la version "debug", je risque quoi?


    Tu risques rien...
    Elle fonctionnera très bien sur ton poste (celui où t'as compilé).
    Bien sûr elle ne fonctionnera sur aucun autre poste.

    Es tu sûr de ne pas pouvoir avoir une version GC de ton framework ?
    Demande à  son auteur, il a juste un flag à  modifier puis il recompile, et là , ça devrait être ok.
  • RocouRocou Membre
    mai 2009 modifié #5
    Bon l'auteur du framework m'a promis de regarder mais en attendant, j'ai viré l'option "garbage collector" (et "releasé" mes objets).

    La compilation se passe bien mais quand j'essaie d'exécuter la version "release" sur une autre machine que la mienne, elle se crashe tout de suite.
    (la machine de test est strictement équivalente à  la machine de développement).

    Je suppute un problème de "link", une option à  cocher mais laquelle?

    EDIT: le log m'affiche ceci:

    "Dyld Error Message:
    Library not loaded: @loader_parh/..Frameworks/PGSQLKit.framework/Versions/A/PGSQLKit
    Reference from: chemin de l'application
    Reason: image not found
  • NoNo Membre
    02:30 modifié #6
    dans 1242036898:

    Bon l'auteur du framework m'a promis de regarder mais en attendant, j'ai viré l'option "garbage collector" (et "releasé" mes objets).

    La compilation se passe bien mais quand j'essaie d'exécuter la version "release" sur une autre machine que la mienne, elle se crashe tout de suite.
    (la machine de test est strictement équivalente à  la machine de développement).

    Je suppute un problème de "link", une option à  cocher mais laquelle?

    EDIT: le log m'affiche ceci:

    "Dyld Error Message:
    Library not loaded: @loader_parh/..Frameworks/PGSQLKit.framework/Versions/A/PGSQLKit
    Reference from: chemin de l'application
    Reason: image not found


    Cette foic-ci, c'est le framework PGSQL qui n'est pas présent sur la machine cible.

    Maintenant, tout dépend du "format" de ce framework :
    - si c'est un embedded, il doit se trouver dans le bundle de ton appli (sous-répertoire Frameworks). Si ce n'est pas le cas, tu as dû oublier d'ajouter une copy build phase dans ton projet Xcode afin que ce dernier copie physiquement ce framework à  l'intérieur du bundle lors du build final.
    - si c'est un framework non-embedded, alors il ne faut pas oublier de dire à  tes futurs utilisateurs d'installer le framework avant de lancer ton appli.
  • RocouRocou Membre
    02:30 modifié #7
    dans 1242041390:

    Cette foic-ci, c'est le framework PGSQL qui n'est pas présent sur la machine cible.

    Maintenant, tout dépend du "format" de ce framework :
    - si c'est un embedded, il doit se trouver dans le bundle de ton appli (sous-répertoire Frameworks). Si ce n'est pas le cas, tu as dû oublier d'ajouter une copy build phase dans ton projet Xcode afin que ce dernier copie physiquement ce framework à  l'intérieur du bundle lors du build final.

    Ouf, ça y est, ça fonctionne! C'est pas simple ce truc.
    Merci!
Connectez-vous ou Inscrivez-vous pour répondre.