2012-03-31 1 views
3

Je suis en train de compiler des trucs sous Mac OS 10.7 dans Eclipse et la construction meurt sur:symboles non définis symboles non définis pour x86_64 architecture: « _kCFAllocatorDefault »

Undefined symbols for architecture x86_64: 
    "_kCFAllocatorDefault", referenced from: 
     ___GLeeGetProcAddress in GLee.o 
    "_CFURLCreateWithFileSystemPath", referenced from: 
     ___GLeeGetProcAddress in GLee.o 
    "_CFStringCreateWithCString", referenced from: 
     ___GLeeGetProcAddress in GLee.o 
    "_CFBundleCreate", referenced from: 
     ___GLeeGetProcAddress in GLee.o 
    "_CFBundleGetFunctionPointerForName", referenced from: 
     ___GLeeGetProcAddress in GLee.o 
    "_CFRelease", referenced from: 
     ___GLeeGetProcAddress in GLee.o 
    "_glGetString", referenced from: 
     ___GLeeGetExtensions in GLee.o 
     _GLeeGetExtStrGL in GLee.o 
     _GLeeInit in GLee.o 
    (maybe you meant: _GLee_Lazy_glGetStringi, _GLeeFuncPtr_glGetStringi) 
    "___CFConstantStringClassReference", referenced from: 
     CFString in GLee.o 

donc je sais que le problème est avec des symboles ld. Maintenant, j'ai essayé d'aller dans les propriétés du projet et d'ajouter le framework CoreFramework aux paramètres de g ++ et gcc dans eclipse mais cela ne l'a pas résolu.

Où sont situés ces symboles et plus important - comment les ajouter à mon projet?

Répondre

5

J'ai corrigé ceci en ajoutant un .dylib au lieur. Comment le configurer?

  1. Voir la fiche projet bienséances
  2. Aller à C/C++ build -> Paramètres
  3. Choisissez Mac OS X C++ Linker -> Bibliothèques est ici où la partie la plus délicate est ... j'ai découvert par la méthode "essai-erreur", comment cela fonctionne:

Disons que vous avez un fichier dylib que vous voulez ajouter appelé "libMyLib.dylib" situé dans/opt/local/lib/MyLibrary

pour une partie de la fenêtre où e il dit bibliothèques ajouter la ligne "MyLib" Pour une partie de la fenêtre où il est dit chemin de recherche bibliothèque add ligne "/ opt/local/lib/MyLibrary /"

=> Eclipse fera automatiquement: 1 ajouter "lib" devant la chaîne 2. ajouter ".dylib" après votre chaîne

Un autre problème survient avec Mac ... Supposons que vous utilisiez des symboles du framework CoreFoundation. Si vous n'êtes pas sûr, vous pouvez toujours vérifier par "file myFile"

Le problème est que eclipse ne prendra jamais correctement sur ces dylibs de MAC OS SDK et/System/Bibliothèque/Frameworks/parce qu'ils n'ont pas le .dylib ajouté à eux. L'astuce consiste simplement à aller à l'emplacement du dylib (bien qu'il n'ait pas de .dylib dans son nom), par exemple. cd /System/Library/Frameworks/CoreFoundation.framework

puis copiez le fichier et ajouter dylib (ne pas Renommez-le !!!)

file CoreFoundation 
    CoreFoundation (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 
    CoreFoundation (for architecture i386): Mach-O dynamically linked shared library i386 
    #copy the lib and name it to "eclipse friendly format" 
    cp CoreFoundation libCoreFoundation.dylib 
4

Vous pouvez utiliser l'option -Cadre par exemple g ++ -framework CoreFoundation ..........

+0

Ne fonctionnait pas pour moi. Je reçois une erreur "ld: framework not found CoreFoundation". – Zammbi

Questions connexes