Autor Thema: Fehler im C++ Kernel Tutorial?  (Gelesen 6638 mal)

mhribernik

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« am: 12. July 2006, 15:30 »
Hallo!

Ich hab mich gerade an einem Kernel in C++ versucht. Hab die Anweißungen im Tutorial genau befolgt, doch beim Kompilieren mit gcc kommt folgende Fehlermeldung:



C:\DJGPP\mystuff>gcc -c Video.cpp -ffreestanding -nostdlib -fno-builtin -fno-rtti -fno-exceptions
cc1plus.exe: warning: command line option "-ffreestanding" is valid for C/ObjC but not for C++
In file included from Video.cpp:1:
Video.h:26:7: warning: no newline at end of file
Video.cpp:71:2: warning: no newline at end of file
Video.cpp: In constructor 'CVideo::CVideo()':
Video.cpp:5: error: 'pVideoMem' was not declared in this scope
Video.cpp: In member function 'void CVideo::TextOut(char*, char)':
Video.cpp:46: error: 'pVideoMem' was not declared in this scope
Video.cpp: In member function 'void CVideo::ClearScreen()':
Video.cpp:58: error: 'pVideoMem' was not declared in this scope
Video.cpp:58: error: 'setmem' was not declared in this scope
Video.cpp: In member function 'void CVideo::ScrollDown(unsigned int)':
Video.cpp:67: error: 'pVideoMem' was not declared in this scope
Video.cpp:67: error: 'memcpy' was not declared in this scope
Video.cpp:68: error: 'setmem' was not declared in this scope

C:\DJGPP\mystuff>



Hab dann sogar den Code via Copy & Paste übernommen. Hat trotzdem nicht funktioniert.

Wo liegt der Fehler? Was mach ich Falsch?



Ich danke euch im Voraus für euer Bemühen!
mfg. Marko


PS. Den Quellcode findet ihr hier: http://www.jay-code.de/scripts/htmlgenerator.php?page=ckernel2&directory=tutorials

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #1 am: 12. July 2006, 16:38 »
also pVideoMem ist einfach im header falsch geschrieben xD da muss das 'm' auch groß in der klassendeklaration.
das problem, dass memcpy und setmem fehlen, hatten wir schon einmal: einfach selba schreiben. den rest wirste ja wohl selber hinkriegen, sonst einfach nachfragen.

maumo

mhribernik

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. July 2006, 18:08 »
DANKE für deine Antwort.

Bezüglich memcpy und setmem: Wie kann ich die erstellen? Könntest du mir dabei helfen?


Ich danke im Voraus.
Mfg. Marko

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 12. July 2006, 20:14 »
Im SVN-Repository von LOST gibt es zufällig die beiden Funktionen:

void * memcpy(void * dest, const void * src, size_t num)
{
    char *d = (char*)dest, *s = (char*)src;

    while(num--)
    {
        *d++ = *s++;
    }

    return dest;
}
         /// Addresse   was    wie oft?

void * memset(void * addr, int value, size_t len)
{
char *d = (char*)addr;
while(len--)
{
// Code ausführen
*d++ = value;
}

return addr;
}


memcpy ist von mir und memset von Damian und beide stehen unter der BSD-Lizenz. Wenn du also den Code verwenden willst, musst du dich an diese Lizenz halten. Oder du implementierst sie selbst neu, was eigentlich kein problem darstellen sollte. ;) Du solltest übrigens auch aufpassen, ob die Funktionen genau die selbe Aufrufkonventionen haben, wie die in deinem Code.

memcpy und memset halten sich an das hier dokumentierte Verhalten:
http://www.cplusplus.com/ref/cstring/memcpy.html
http://www.cplusplus.com/ref/cstring/memset.html
Dieser Text wird unter jedem Beitrag angezeigt.

Damian

  • Beiträge: 100
    • Profil anzeigen
    • http://www.cosysda.de
Gespeichert
« Antwort #4 am: 14. July 2006, 13:09 »
Zitat von: mhribernik
DANKE für deine Antwort.

Bezüglich memcpy und setmem: Wie kann ich die erstellen? Könntest du mir dabei helfen?


Ich danke im Voraus.
Mfg. Marko


Hat das jetzt gefunktioniert?????
Habe mein eigenen Code syntax ;)
Und rechtschreibfehlern dürft ihr behalten.
if (user =="user"){Rechtschreibfehler_behalten();}elseif (user >= "moderator"){Rechtschreibfehlern_korrigieren();}

mhribernik

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 14. July 2006, 21:04 »
Nein hat noch nicht ganz "gefunktioniert"  :wink:  nix für ungut.

Nein, mit den abänder des codes komm ich nicht ganz klar. Könntest du mir dabe helfen?


Danke im Voraus.
mfg. Marko

Damian

  • Beiträge: 100
    • Profil anzeigen
    • http://www.cosysda.de
Gespeichert
« Antwort #6 am: 15. July 2006, 13:20 »
Du kannst mich ruhig im icq oder msn auf nehmen. Die tuts von Teejay sind ziemlich schwer. Ich habe es auch nie hinbekommen. Ich habe mal vom forum eine kleine testkernel runtergeladen. Dafür musst du aber mit linux sein.
Habe mein eigenen Code syntax ;)
Und rechtschreibfehlern dürft ihr behalten.
if (user =="user"){Rechtschreibfehler_behalten();}elseif (user >= "moderator"){Rechtschreibfehlern_korrigieren();}

 

Einloggen