Autre

Symbole(s) d'erreur Mac introuvables pour l'architecture x86_64

Affiche originale
22 juil. 2016
  • 22 juil. 2016
Salut tout le monde,

Je travaille sur un projet qui consiste à compiler une application Windows sur Mac. L'application est écrite en C++ avec Qt. Il est composé des librairies et du projet principal :
http://hpics.li/d8bb2ec
Le projet utilise une bibliothèque externe, ODA, pour gérer les fichiers .dwg et .dgn.
Le problème est que lorsque je compile la première bibliothèque (MdCore), j'obtiens une erreur : symbole(s) introuvable pour l'architecture x86_64.
Au début, j'ai ajouté -stdlib=libstdc++ à l'argument qmake mais Qt m'a généré des fichiers de 0 octet, ce n'était donc pas la solution.
J'ai essayé différentes versions de la bibliothèque ODA : 32 bits, 64 bits pour OSX 10.7 et 10.11. (Mon Mac est sous OSX 10.11)
J'ai fait la commande 'file' sur mes librairies et voici la sortie :

:
.a : bibliothèque aléatoire d'archive ar actuelle

.dylib :
Binaire universel Mach-0 avec 2 architectures
(pour l'architecture x68_64) : bibliothèque partagée Mach-0 64 bits liée dynamiquement x86_64
(pour l'architecture i386) : Mach-0 bibliothèque partagée liée dynamiquement i386

J'ai essayé de compiler en 32 et 64bit mais cela ne change rien. je suis sur ce problème depuis deux semaines je ne sais pas ce que je peux faire

J'ai créé un sujet sur le forum Qt peut-être que vous pouvez trouver plus d'informations :
https://forum.qt.io/topic/69171/compile-generate-0-byte-files-on-os-x/11
https://forum.qt.io/topic/69171/compile-generate-0-byte-files-on-os-x/11
Si quelqu'un a une piste ou une solution je serais intéressé

Merci ! C

cqexbesd

4 juin 2009


Allemagne
  • 22 juil. 2016
Je ne connais rien à qmake mais peut-être devriez-vous simplement publier les commandes de votre compilateur pour compiler et peut-être que quelqu'un pourra voir ce qui ne va pas.

Affiche originale
22 juil. 2016
  • 22 juil. 2016
salut cqexbesd, merci pour votre réponse, voici le début de la sortie de build :

17:34:10: Begin : '/Users/developpement/Qt/5.7/clang_64/bin/qmake' /Users/developpement/Desktop/Mediacad2/MdCore/MdCore.pro -r -spec macx-clang CONFIG+=debug CONFIG+= x86_64 CONFIG+=qml_debug

17:34:10: Le processus '/Users/developpement/Qt/5.7/clang_64/bin/qmake' s'est terminé normalement

17:34:10 : Début : '/usr/bin/make'

... C

cqexbesd

4 juin 2009
Allemagne
  • 24 juillet 2016
Ce que je voulais dire, c'est que qmake n'est qu'un outil pour appeler le compilateur. Pouvez-vous trouver la ligne où qmake appelle le compilateur ? Vraisemblablement, il ne l'appelle pas correctement ou les choses fonctionneraient. C'est au moins un endroit pour commencer.

Affiche originale
22 juil. 2016
  • 25 juil. 2016
Je pense que c'est ici :
Code : |_+_|
dans ma sortie de compilation, j'ai ces lignes plusieurs fois, mais seule la dernière ligne change (le nom du fichier change)

Edit : voici les mêmes lignes mais avec des espaces entre elles
Code : |_+_| Dernière modification par un modérateur : 25 juil. 2016 C

cqexbesd

4 juin 2009
Allemagne
  • 25 juil. 2016
Il devrait également y avoir une ligne de liaison - par ex. une ligne où clang++ est appelé sans l'argument -c. Cela pourrait être utile si vous pouvez coller un lien vers la sortie entière en fait.

Affiche originale
22 juil. 2016
  • 26 juillet 2016
Je ne pense pas qu'il soit possible de changer les arguments du compilateur. Je peux le faire avec l'invite.
Voici la sortie complète (c'est très très long ! 100 000 lignes) : http://textup.fr/171939hC


Edit : j'ai compilé avec le prompt donc j'ai plus de lignes sur la sortie, et les dernières lignes sont intéressantes :


Symboles non définis pour l'architecture x86_64 :

Code : |_+_| Dernière modification par un modérateur : 26 juil. 2016 C

cqexbesd

4 juin 2009
Allemagne
  • 26 juillet 2016
Je pense que la sortie 100K pour une construction à partir de tout sauf du système le plus compliqué est probablement un signe que les choses ont mal tourné quelque part - mais c'est un commentaire plus général sur l'état de l'industrie.

Revenons à votre problème spécifique. Je ne vois pas les erreurs de liaison que vous avez publiées dans la 'sortie complète', mais cela semble être juste une erreur d'éditeur de liens régulière. Comme sur d'autres plates-formes, vous pouvez utiliser nm (ou Google) pour trouver où ces symboles sont définis et il semble être dans /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pour moi (mais j'ai un très vieux mac donc ce n'est peut-être pas vrai pour vous).

Vous ne feriez pas de lien direct avec cette bibliothèque. Essayez d'ajouter le code : |_+_| à vos drapeaux de liaison.

Affiche originale
22 juil. 2016
  • 27 juil. 2016
Oui, tu as raison !! Merci beaucoup je peux compiler maintenant ! J'ai été confronté à ce problème pendant 3 semaines ! Merci beaucoup ! AVEC

zibby

5 févr. 2019
  • 5 févr. 2019
cqexbesd a déclaré : Je pense que la sortie 100K pour une construction à partir de tout sauf du système le plus compliqué est probablement un signe que les choses se sont mal passées quelque part - mais c'est un commentaire plus général sur l'état de l'industrie.

Revenons à votre problème spécifique. Je ne vois pas les erreurs de liaison que vous avez publiées dans la 'sortie complète', mais cela semble être juste une erreur d'éditeur de liens régulière. Comme sur d'autres plates-formes, vous pouvez utiliser nm (ou Google) pour trouver où ces symboles sont définis et il semble être dans /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pour moi (mais j'ai un très vieux mac donc ce n'est peut-être pas vrai pour vous).

Vous ne feriez pas de lien direct avec cette bibliothèque. Essayez d'ajouter le code : |_+_| à vos drapeaux de liaison.
AVEC

zibby

5 févr. 2019
  • 5 févr. 2019
salut les gars ... j'ai rencontré un problème très similaire ... mais j'utilise le terminal pour compiler ... quelqu'un peut-il m'aider s'il vous plaît sur la façon dont je peux faire la même solution en cas de terminal ?

j'ai un fichier.

okieiam

17 déc. 2016
  • 8 févr. 2019
zibbi a dit : salut les gars... j'ai rencontré un problème très similaire... mais j'utilise le terminal pour compiler... quelqu'un peut-il m'aider s'il vous plaît sur la façon dont je peux faire la même solution en cas de terminal ?

j'ai un fichier.
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure