Autor Thema: Problem mit OOP  (Gelesen 7182 mal)

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« am: 07. December 2006, 11:55 »
Ich möchte meine Konsole gerne OO Programmieren, damit ich mehrere "Aktive" stellen habe, an denen ich etwas schreiben kann, und mithilfe eines backbuffers auch verschiedene Stellen überlagern kann.

Allerdings gibts schon beim erstellen einer einfachen Klasse ein Problem:

Das kommt beim Konpilieren: (
warning: cannot find entry symbol start; defaulting to 000010d0Der entsprechende aufruf des Kompilers:
gpp -Os -nostdlib -fno-builtin -fno-rtti -fno-exceptions -o x:\reos\_ckernel\gui\flowbox.obj x:\reos\_ckernel\gui\flowbox.cpp
Was ist falsch, wie mache ich es richtig??
ps.: Wie kann ich die Zeichenbegrenzung eines Befehls unter winXP umgehen??

T0ast3r

  • Gast
Gespeichert
« Antwort #1 am: 07. December 2006, 12:39 »
Hi,

also die Meldung ist vom Compiler nur eine Warnung, kein Fehler.
Sie sagt aus, dass du den start punkt nicht angegeben hast, also wo dein "programm" beginnt

da musst du auch aufpassen mit dem Datei Format, wenn deine Konsole das OS darstellst musst du es binär compilieren, ansonsten musst du eben achten dass dein OS das Format auch unterstützt

lg,

Toaster

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #2 am: 07. December 2006, 14:02 »
Wie wärs wenn du "-nostdlib" weglassen würdest? Oder brauchst du keine Standardlib, welche übrigens auch den entry point liefert :wink:
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 07. December 2006, 16:12 »
Dir ist klar das man die sdtlib an das os anpassen sollte bzw gewisse voraussetzungen schaffen muss damit das überhaupt tut?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #4 am: 07. December 2006, 17:54 »
Ich hab einfach mal angenommen (Wir sind hier im Offtopic forum :wink: ), dass er das unter Windows/Linux machen will und nicht unter seinem OS. Ich hätte mir evtl. mal den Pfad anschauen können, zugegeben, aber er hätte es auch einfach sagen können :wink:
Dann sieht das natürlich anders aus. Du darfst mit gcc dann nur Objektdateien machen und musst die mit deinem eigenen Linkerscript linken. Sollte klar sein dass du dann auch eine entry point in deiner libc brauchst. Den kann man im Linkerscript angeben und der sollte dann main() aufrufen.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #5 am: 07. December 2006, 19:49 »
Und wie mache ich das mit dem entrypoint??
was ist mit libc gemeint??

mit gcc mache ich ja nur die objekt-datei.

ps.: Standardbibnliotheken verwende ich "nicht". Es existieren allerdings einige ihrer Funktionen wie z.B. strcmp o.ä.. Das sollte aber eigentlich unwichtig sein... OOP ist ja ein bestandteil von C++, und nicht von den Standard-bibliotheken

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #6 am: 07. December 2006, 20:21 »
Und wie mache ich das mit dem entrypoint??
Die Funktion bei der die Ausführung des Programms beginnt. Das ist normalerweise nicht main, sondern ein asm stub welcher main aufruft und danach das Programm beendet. Im Linkerscript musste halt angeben was der Entrypoint ist. Schau dir einfach mal meinen asm stub und mein Linkerscript an. Beim Linkerscript ist eigentlich nur die erste Zeile wichtig. Zu beachten ist auch noch, dass beides für C++ ist und insofern etwas mehr als das was für C nötig wäre beinhaltet.

Zitat
was ist mit libc gemeint??
Die C Standardbibliothek vllt. :?
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #7 am: 08. December 2006, 20:22 »
danke

 

Einloggen