Sonstiges

Mac-Fehlersymbol(e) für Architektur x86_64 nicht gefunden

Dort

Originalplakat
22. Juli 2016
  • 22. Juli 2016
Hallo zusammen,

Ich arbeite an einem Projekt, das darin besteht, eine Windows-Anwendung auf einem Mac zu kompilieren. Die Anwendung ist in C++ mit Qt geschrieben. Es besteht aus Bibliotheken und dem Hauptprojekt:
http://hpics.li/d8bb2ec
Das Projekt verwendet eine externe Bibliothek, ODA, um .dwg- und .dgn-Dateien zu verwalten.
Das Problem ist, wenn ich die erste Bibliothek (MdCore) kompiliere, erhalte ich eine Fehlermeldung: Symbol(e) nicht gefunden für Architektur x86_64.
Zuerst habe ich -stdlib=libstdc++ zum qmake-Argument hinzugefügt, aber Qt hat mir 0-Byte-Dateien generiert, also war dies nicht die Lösung.
Ich habe verschiedene Versionen der ODA-Bibliothek ausprobiert: 32bit, 64bit für OSX 10.7 und 10.11. (Mein Mac läuft unter OSX 10.11)
Ich habe den Befehl 'Datei' in meinen Bibliotheken gemacht und hier die Ausgabe:

:
.a: aktuelle zufällige Bibliothek des ar-Archivs

.dylib:
Mach-0 Universal Binary mit 2 Architekturen
(für Architektur x68_64): Mach-0 64-Bit dynamisch verknüpfte gemeinsam genutzte Bibliothek x86_64
(für Architektur i386): Mach-0 dynamisch verknüpfte gemeinsam genutzte Bibliothek i386

Ich habe versucht, auf 32 und 64 Bit zu kompilieren, aber es ändert nichts. Ich habe dieses Problem seit zwei Wochen, ich weiß nicht, was ich tun kann

Ich habe ein Thema im Qt-Forum erstellt, vielleicht finden Sie weitere Informationen:
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
Falls jemand eine Ahnung oder Lösung hat, würde mich das interessieren

Vielen Dank ! C

cqexbed

4. Juni 2009


Deutschland
  • 22. Juli 2016
Ich weiß nichts über qmake, aber vielleicht sollten Sie einfach posten, was Ihre Compiler-Befehle zum Kompilieren sind, und vielleicht kann jemand sehen, was falsch ist.

Dort

Originalplakat
22. Juli 2016
  • 22. Juli 2016
hallo cqexbesd, danke für deine Antwort, hier ist der Anfang der Build-Ausgabe:

17:34:10: Beginn: '/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 KONFIG+=qml_debug

17:34:10: Der Prozess '/Users/developpement/Qt/5.7/clang_64/bin/qmake' wurde normal beendet

17:34:10: Beginnen Sie : '/usr/bin/make'

... C

cqexbed

4. Juni 2009
Deutschland
  • 24.07.2016
Was ich meinte, war, dass qmake nur ein Werkzeug zum Aufrufen des Compilers ist. Können Sie die Zeile finden, in der qmake den Compiler aufruft? Vermutlich wird er nicht richtig aufgerufen oder die Dinge würden funktionieren. Es ist zumindest irgendwo anzufangen.

Dort

Originalplakat
22. Juli 2016
  • 25.07.2016
Ich glaube, es ist hier:
Code: |_+_|
in meiner Kompilierungsausgabe habe ich diese Zeilen mehrmals, aber nur die letzte Zeile ändert sich (der Name der Datei ändert sich)

Bearbeiten: Hier sind die gleichen Zeilen, aber mit Leerzeichen dazwischen
Code: |_+_| Zuletzt von einem Moderator bearbeitet: 25.07.2016 C

cqexbed

4. Juni 2009
Deutschland
  • 25.07.2016
Es sollte auch eine Verbindungslinie vorhanden sein - z.B. eine Zeile, in der clang++ ohne das Argument -c aufgerufen wird. Es kann nützlich sein, wenn Sie tatsächlich einen Link zur gesamten Ausgabe einfügen können.

Dort

Originalplakat
22. Juli 2016
  • 26. Juli 2016
Ich glaube nicht, dass es möglich ist, Argumente des Compilers zu ändern. Ich kann es mit der Aufforderung tun.
Hier ist die vollständige Ausgabe (es ist sehr, sehr lang ! 100.000 Zeilen): http://textup.fr/171939hC


Bearbeiten: Ich habe mit der Eingabeaufforderung kompiliert, damit ich mehr Zeilen in der Ausgabe habe, und die letzten Zeilen sind interessant:


Undefinierte Symbole für Architektur x86_64:

Code: |_+_| Zuletzt von einem Moderator bearbeitet: 26.07.2016 C

cqexbed

4. Juni 2009
Deutschland
  • 26. Juli 2016
Ich denke, eine 100K-Ausgabe für einen Build von etwas anderem als dem kompliziertesten System ist wahrscheinlich ein Zeichen dafür, dass irgendwo etwas schief gelaufen ist - aber das ist eine allgemeinere Bemerkung zum Zustand der Branche.

Zurück zu Ihrem konkreten Problem. Ich sehe die Linkfehler, die Sie in der 'vollständigen Ausgabe' gepostet haben, nicht, aber dies sieht nur nach normalen Linkerfehlern aus. Wie auf anderen Plattformen können Sie nm (oder Google) verwenden, um herauszufinden, wo diese Symbole definiert sind und es scheint in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation für mich zu sein (aber ich habe eine sehr alter Mac, so dass es für Sie möglicherweise nicht wahr ist).

Sie würden nicht direkt mit dieser Bibliothek verknüpfen. Versuchen Sie, Code hinzuzufügen: |_+_| zu Ihren Linker-Flags.

Dort

Originalplakat
22. Juli 2016
  • 27.07.2016
Ja, du hast recht !! Vielen Dank, dass ich jetzt kompilieren kann! Ich stand seit 3 ​​Wochen vor diesem Problem! Danke vielmals ! MIT

zibby

5. Februar 2019
  • 5. Februar 2019
cqexbesd sagte: Ich denke, dass eine Ausgabe von 100.000 für einen Build von einem beliebigen anderen System als dem kompliziertesten System wahrscheinlich ein Zeichen dafür ist, dass irgendwo etwas schief gelaufen ist - aber das ist ein allgemeinerer Kommentar zum Stand der Branche.

Zurück zu Ihrem konkreten Problem. Ich sehe die Linkfehler, die Sie in der 'vollständigen Ausgabe' gepostet haben, nicht, aber dies sieht nur nach normalen Linkerfehlern aus. Wie auf anderen Plattformen können Sie nm (oder Google) verwenden, um herauszufinden, wo diese Symbole definiert sind und es scheint in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation für mich zu sein (aber ich habe eine sehr alter Mac, so dass es für Sie möglicherweise nicht wahr ist).

Sie würden nicht direkt mit dieser Bibliothek verknüpfen. Versuchen Sie, Code hinzuzufügen: |_+_| zu Ihren Linker-Flags.
MIT

zibby

5. Februar 2019
  • 5. Februar 2019
Hallo Leute ... ich bin auf ein sehr ähnliches Problem gestoßen ... aber ich benutze das Terminal zum Kompilieren ... kann mir bitte jemand helfen, wie ich die gleiche Lösung im Falle eines Terminals machen kann?

Ich habe eine ./configure-Datei bereit und sie läuft reibungslos, aber ich bekomme ffi ... verwandte 'Symbole nicht gefunden ...' und etwas mit dem Linker zu tun, wenn ich make ausführe

okieiam

17.12.2016
  • 8. Februar 2019
zibbi sagte: hi leute ... ich bin auf ein sehr ähnliches problem gestoßen ... aber ich benutze das terminal zum kompilieren ... kann mir bitte jemand helfen, wie ich die gleiche lösung im falle von terminal machen kann?

Ich habe eine ./configure-Datei bereit und sie läuft reibungslos, aber ich bekomme ffi ... verwandte 'Symbole nicht gefunden ...' und etwas mit dem Linker zu tun, wenn ich make ausführe
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure