Lowlevel

OffZone => Offtopic => Thema gestartet von: RedEagle am 07. December 2006, 11:55

Titel: Problem mit OOP
Beitrag von: RedEagle 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??
Titel: Re: Problem mit OOP
Beitrag von: T0ast3r 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
Titel: Re: Problem mit OOP
Beitrag von: bluecode 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:
Titel: Re: Problem mit OOP
Beitrag von: Termite 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?
Titel: Re: Problem mit OOP
Beitrag von: bluecode 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.
Titel: Re: Problem mit OOP
Beitrag von: RedEagle 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
Titel: Re: Problem mit OOP
Beitrag von: bluecode 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 (https://opensvn.csie.org/traccgi/lightOS/browser/trunk/lib/lightOS/x86/startup%2B%2B.asm) und mein Linkerscript (https://opensvn.csie.org/traccgi/lightOS/browser/trunk/lib/lightOS/x86/linkerscript%2B%2B) 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. :?
Titel: Re: Problem mit OOP
Beitrag von: RedEagle am 08. December 2006, 20:22
danke