XCode 1.5 - Newbieprobleme

S

Spectre1337

Registriert
Thread Starter
Dabei seit
09.02.2005
Beiträge
4
Reaktionspunkte
0
Tag auch!

Ich habe vor, mein C++ GLUT Programm, welches ausschließlich plattformunabhängigen Code enthaltet, von Windows auf Mac OS X zu porten. Diesbezüglich habe ich mir die neueste Version von XCode heruntergeladen, mich gleich an die Arbeit gemacht und folgende Probleme entdeckt:

* Die Standard-Bibliothek math.h (#include <math.h>) wird nicht gefunden. Angenommen ich nehme math.h einfach vom Visual Studio Verzeichnis (was unter Umständen funktionieren könnte ...), wohin müsste ich die Datei kopieren?

* Obwohl ich die Frameworks OpenGL und GLUT ins Projekt einbezogen habe, werden die OpenGL-Datentypen GLuint, GLubyte nicht erkannt. Woran liegt das?

Bei der Erschaffung meines XCode-Projekts habe ich folgende Schritte unternommen:

* Ein Konsolenprojekt erstellt.
* Die Frameworks OpenGL und GLUT einbezogen.
* Sämtliche cpp-Files zum Projekt hinzugefügt.

Bitte beachtet, dass ich bei OS X und XCode ein absoluter Neuling bin. Ich denke aber, dass das keine komplizierten Probleme sind. Ich danke schon mal für Eure Hilfe!
 
Spectre1337 schrieb:
Die Standard-Bibliothek math.h (#include <math.h>) wird nicht gefunden.

Das kann nicht sein. Die muss da sein, denn die gehört zum Sprachumfang mehrerer der Sprachen die XCode kann. Normalerweise in /usr/include/math.h.

Angenommen ich nehme math.h einfach vom Visual Studio Verzeichnis (was unter Umständen funktionieren könnte ...),

Aber nicht wird.

wohin müsste ich die Datei kopieren?

Irgendwo in den include-Pfad der bei Deinen Compiler-Optionen eingestellt ist.

* Ein Konsolenprojekt erstellt.

Hast Du vielleicht aus Versehen eine von den Nicht-C++-Voreinstellungen benutzt? Z.B. C oder ObjC?
 
Danke für den Tipp! Jetzt habe ich aber ein komisches Problem.

Es sei zu beachten, dass ich mit Linux oder Unix (somit auch OSX) noch nicht sehr viel zu tun hatte, desshalb mag mein Problem sehr banal erscheinen.

Es geht um das usr-Directory. Ich habe gehört, dies ist bei Unix-Systemen ein Standardordner für Benutzerdateien und offenbar auch für Compiler-relevante Dateien. Ich habe auf dem OSX-System die gesamte Festplatte mit Finder durchsucht, kann es aber nicht finden! Offenbar (sofern dies möglich ist) hat mein OSX-System keinen usr-Ordner und kann somit auch nicht die notwendigen Header nicht finden. Wo genau muss ich den usr-Ordner anlegen und wie befehle ich OSX, diesen Ordner als usr-Ordner zu übernehmen, sofern dies Notwendig ist?

Danke für die Hilfe.
 
Das ist im Finder unsichtbar, weil's in /.hidden steht. Kannst aber im Terminal "open /usr" tippen um ein Finderfenster zu öffnen.
 
/usr ist schon vorhanden, du siehst das bloss nicht im finder, weil die bsd dateien ausgeblendet werden...
da musst du schon im terminal gucken, dann siehst du die
 
tach auch!

ich bin wieder zurueck mit dem naechsten problem. ich habe /usr lokalisiert und das problem gefunden: unix ist natuerlich case sensitive, und wenn ich Math.h inkludieren will findet er's nicht, weil die datei in usr/include math.h heisst!

aus ganz bestimmten gruenden habe ich mich dagegen entschieden, in meinem code die ganzen "Math" in "math" umzuwandeln, desshalb bleibt eine alternative: die datei in usr/include in Math.h umzubenennen. aber der gesamte usr ordner ist schreibgeschuetzt, und ich habe keine ahnung, wie ich diesen schutz aufheben kann! mit chmod komme ich nicht weiter, dafuer habe ich offenbar nicht die berechtigung. was tun?
 
Auch wenn dir die Antwort jetzt vl. nicht passen wird, aber das hat schon seine Gründe und ist auch gut so, dass man im /usr Ordner nur Änderungen machen kann, wenn man wirklich weiß was man tut.

math.h in Math.h umzubennen halte ich für eine schlechte bis sehr schlechte Idee.


Du kannst doch in deinem Quellcode einfach Math durch math mit Suchen+Ersetzen ändern. Das ist einfach und beschädigt keinenfalls das System

*jp*
 
ich habe befürchtet, das so eine antwort jetzt kommt. ich weis schon, warum ich auf das umändern in quellcode verzichte (desshalb habe ich BESTIMMTE GRUENDE auch fett markiert). ich möchte trotzdem wissen, wie man den schreibschutz von /usr umgehen kann.
 
Da würde ich mich gleich mal anschliessen. Um Software portabel zu halten kann man ja auch noch Präprocesso statements (also #ifdef... ) verwenden. Da aber Win ja eh caseinsensitive ist machts doch eh nichts aus alle Math.h in math.h umzuwandeln, wie jalapeno schon geschrieben hat..
 
War ich zu langsam.

Gut, nach root user activieren im Forum suchen.
Aber nicht umbenennen, sondern höchsten einen softlink setzen (ln -s <dateidiesgibt> <neuername>)
 
Spectre1337 schrieb:
ich habe befürchtet, das so eine antwort jetzt kommt. ich weis schon, warum ich auf das umändern in quellcode verzichte (desshalb habe ich BESTIMMTE GRUENDE auch fett markiert). ich möchte trotzdem wissen, wie man den schreibschutz von /usr umgehen kann.

Ja, zunächst im Netinfo Manager den root aktivieren. Danach am besten in der Konsole zunächst "su". Dann hast du root-Rechte. Dann nach /usr wechseln. Du brauchst dann keine Rechnte zu ändern.

Allerdings würd ich dir trotzdem empfehlen die math.h nicht einfach umzubennen sondern entweder zu kopieren "cp math.h Math.h" oder noch besser einen Link wie hier schon gesagt wurde: "ln -s Math.h math.h". Du willst ja schließlich noch lange Freude mit deinem OSX haben! =)
 
Spectre1337 schrieb:
tach auch!

ich bin wieder zurueck mit dem naechsten problem. ich habe /usr lokalisiert und das problem gefunden: unix ist natuerlich case sensitive, und wenn ich Math.h inkludieren will findet er's nicht, weil die datei in usr/include math.h heisst!

aus ganz bestimmten gruenden habe ich mich dagegen entschieden, in meinem code die ganzen "Math" in "math" umzuwandeln, desshalb bleibt eine alternative: die datei in usr/include in Math.h umzubenennen. aber der gesamte usr ordner ist schreibgeschuetzt, und ich habe keine ahnung, wie ich diesen schutz aufheben kann! mit chmod komme ich nicht weiter, dafuer habe ich offenbar nicht die berechtigung. was tun?

Verstehe ich nicht. Nicht Unix ist case sensitive, sondern C und C++. Was ist denn das für Compiler, der "Math.h" akzeptiert?
 
Nun ja der compiler ist schon case-sensitiv, was aber der Präprocessor Dir reinholt kommt ja über nen syscall von der Platte, und da ist es ja bei windows nicht notwendigerweise case-sensitiv
 
*-jalapeno-* schrieb:
Ja, zunächst im Netinfo Manager den root aktivieren. Danach am besten in der Konsole zunächst "su". Dann hast du root-Rechte.
Ich würde da eher sudo verwenden, dann braucht man nämlich nicht den root aktivieren.
 
Zurück
Oben Unten