Ander

Mac-foutsymbool(en) niet gevonden voor architectuur x86_64

Daar

originele poster
22 juli 2016
  • 22 juli 2016
Hallo iedereen,

Ik werk aan een project dat bestaat uit het compileren van een Windows-applicatie op Mac. De applicatie is geschreven in C++ met Qt. Het is samengesteld met bibliotheken en het hoofdproject:
http://hpics.li/d8bb2ec
Het project gebruikt een externe bibliotheek, ODA, om .dwg- en .dgn-bestanden te beheren.
Het probleem is dat wanneer ik de eerste bibliotheek (MdCore) compileer, ik een foutmelding krijg: symbool (en) niet gevonden voor architectuur x86_64.
Eerst voegde ik -stdlib=libstdc++ toe aan het qmake-argument, maar Qt genereerde me 0 byte-bestanden, dus het was niet de oplossing.
Ik heb verschillende versies van de ODA-bibliotheek geprobeerd: 32bit, 64bit voor OSX 10.7 en 10.11. (Mijn Mac draait op OSX 10.11)
Ik heb het commando 'bestand' gemaakt in mijn bibliotheken en hier de uitvoer:

:
.a: huidige ar archief willekeurige bibliotheek

.dylib:
Mach-0 universeel binair met 2 architecturen
(voor architectuur x68_64): Mach-0 64-bit dynamisch gekoppelde gedeelde bibliotheek x86_64
(voor architectuur i386): Mach-0 dynamisch gekoppelde gedeelde bibliotheek i386

Ik heb geprobeerd te compileren op 32 en 64 bit, maar het verandert niets. Ik zit al twee weken met dit probleem. Ik weet niet wat ik kan doen

Ik heb een onderwerp gemaakt op het Qt-forum, misschien kun je meer informatie vinden:
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
Als iemand een idee of een oplossing heeft, ben ik geïnteresseerd

Bedankt ! C

cqexbed

4 juni 2009


Duitsland
  • 22 juli 2016
Ik weet niets over qmake, maar misschien moet je gewoon posten wat je compiler-commando's zijn om te compileren en misschien kan iemand zien wat er mis is.

Daar

originele poster
22 juli 2016
  • 22 juli 2016
hallo cqexbesd, bedankt voor je antwoord, hier is het begin van de build-output:

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: Het proces '/Users/developpement/Qt/5.7/clang_64/bin/qmake' is normaal voltooid

17:34:10: Begin: '/usr/bin/make'

... C

cqexbed

4 juni 2009
Duitsland
  • 24 juli 2016
Wat ik bedoelde was dat de qmake slechts een hulpmiddel is om de compiler aan te roepen. Kun je de regel vinden waar qmake de compiler aanroept? Vermoedelijk wordt deze niet correct aangeroepen, anders zou het werken. Het is in ieder geval ergens om te beginnen.

Daar

originele poster
22 juli 2016
  • 25 juli 2016
Ik denk dat het hier is:
Code: |_+_|
in mijn compilatie-uitvoer heb ik die regels meerdere keren, maar alleen de laatste regel verandert (de naam van het bestand verandert)

Bewerken: hier zijn dezelfde regels maar met spaties ertussen
Code: |_+_| Laatst bewerkt door een moderator: 25 juli 2016 C

cqexbed

4 juni 2009
Duitsland
  • 25 juli 2016
Er moet ook een verbindingslijn zijn - b.v. een regel waar clang++ wordt aangeroepen zonder het argument -c. Het kan handig zijn als u een link naar de volledige uitvoer kunt plakken.

Daar

originele poster
22 juli 2016
  • 26 juli 2016
Ik denk niet dat het mogelijk is om de argumenten van de compiler te veranderen. Ik kan het doen met de prompt.
Hier is de volledige uitvoer (het is heel erg lang! 100.000 regels): http://textup.fr/171939hC


Bewerken: ik heb gecompileerd met de prompt, dus ik heb meer regels in de uitvoer en de laatste regels zijn interessant:


Ongedefinieerde symbolen voor architectuur x86_64:

Code: |_+_| Laatst bewerkt door een moderator: 26 juli 2016 C

cqexbed

4 juni 2009
Duitsland
  • 26 juli 2016
Ik denk dat 100K output voor een build van alles behalve het meest gecompliceerde systeem waarschijnlijk een teken is dat er ergens iets mis is gegaan - maar dat is een meer algemene opmerking over de toestand van de industrie.

Terug naar uw specifieke probleem. Ik zie de koppelingsfouten die u hebt gepost niet in de 'volledige uitvoer', maar dit lijkt gewoon een gewone linkerfout te zijn. Net als op andere platforms, kun je nm (of Google) gebruiken om te zoeken waar die symbolen zijn gedefinieerd en het lijkt te zijn in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation voor mij (maar ik heb een zeer oude mac, dus het is misschien niet waar voor jou).

Je zou niet rechtstreeks naar die bibliotheek linken. Probeer code toe te voegen: |__+_| naar uw linkervlaggen.

Daar

originele poster
22 juli 2016
  • 27 juli 2016
Ja je hebt gelijk !! Heel erg bedankt, ik kan nu compileren! Ik liep al 3 weken met dit probleem! Heel erg bedankt ! MET

zibby

5 februari 2019
  • 5 februari 2019
cqexbesd zei: Ik denk dat 100K output voor een build van alles behalve het meest gecompliceerde systeem waarschijnlijk een teken is dat er ergens iets mis is gegaan - maar dat is een meer algemene opmerking over de toestand van de industrie.

Terug naar uw specifieke probleem. Ik zie de koppelingsfouten die u hebt gepost niet in de 'volledige uitvoer', maar dit lijkt gewoon een gewone linkerfout te zijn. Net als op andere platforms, kun je nm (of Google) gebruiken om te zoeken waar die symbolen zijn gedefinieerd en het lijkt te zijn in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation voor mij (maar ik heb een zeer oude mac, dus het is misschien niet waar voor jou).

Je zou niet rechtstreeks naar die bibliotheek linken. Probeer code toe te voegen: |__+_| naar uw linkervlaggen.
MET

zibby

5 februari 2019
  • 5 februari 2019
hallo jongens ... ik ben een vergelijkbaar probleem tegengekomen ... maar ik gebruik de terminal om te compileren ... kan iemand me alsjeblieft helpen hoe ik dezelfde oplossing kan doen in het geval van terminal?

ik heb een ./configure-bestand klaar en het werkt soepel, maar ik krijg ffi ... gerelateerde 'symbolen niet gevonden ...' en iets te maken met de linker wanneer ik make uitvoer

okieiam

17 december 2016
  • 8 feb. 2019
zibbi zei: hallo jongens ... ik ben een vergelijkbaar probleem tegengekomen ... maar ik gebruik de terminal om te compileren ... kan iemand me alsjeblieft helpen hoe ik dezelfde oplossing kan doen in het geval van terminal?

ik heb een ./configure-bestand klaar en het werkt soepel, maar ik krijg ffi ... gerelateerde 'symbolen niet gevonden ...' en iets te maken met de linker wanneer ik make uitvoer
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure