Autor Thema: undefined references  (Gelesen 4792 mal)

ReduX

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« am: 22. November 2007, 18:42 »
Hi,
Hab heute mal mein os compilen wollen, jedoch bekomme ich beim linken folgendes:
.\compiled\kernel32.obj(.text+0x1): undefined reference to `__main'
.\compiled\kernel32.obj(.text+0xb): undefined reference to `__atexit'
.\compiled\video.obj(.text+0x1aa):video.cpp: undefined reference to `_setmem'
.\compiled\video.obj(.text+0x207):video.cpp: undefined reference to `_memcpy'
.\compiled\video.obj(.text+0x23c):video.cpp: undefined reference to `_setmem'
Ich habe das C++ im Kernel Tutorial durchgemacht!
Wegen __main und __atexit diese sind ja in der kernel32.asm als extern gemacht und in der support.cpp deklariert.
Bei den anderen funktionen:
Diese hab ich in ASM(funktion.asm) deklariert und in der headerdatei als extern C instalisiert.
Alle obj Files sind im Linker skript eingetragen warum funktioniert es nicht?

MFG ReduX

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 22. November 2007, 20:04 »
Wegen __main und __atexit diese sind ja in der kernel32.asm als extern gemacht und in der support.cpp deklariert.
Sind die in der support.cpp als extern "C" deklariert?

Zitat
Diese hab ich in ASM(funktion.asm) deklariert und in der headerdatei als extern C instalisiert.
Sind sie in funktion.asm auch als global deklariert? in Nasm/Yasm geht das über ".global functionsname".
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

ReduX

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 22. November 2007, 21:06 »
Hi,
Mit global werden die Funktionen nun erkannt.
Ich habe dann noch die Funktionen aus der support.cpp als extern "C" deklariert ist dies auch richtig? Weil im Tut ist davon keine Rede.

MFG ReduX

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 22. November 2007, 21:50 »
Ich habe dann noch die Funktionen aus der support.cpp als extern "C" deklariert ist dies auch richtig?
Jo, das meinte ich ja. Funktioniert es denn jetzt?

Zitat
Weil im Tut ist davon keine Rede.
Welchem den überhaupt?
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

ReduX

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 23. November 2007, 13:22 »
Zitat
Jo, das meinte ich ja. Funktioniert es denn jetzt?
Funktionieren tuts jetzt!
Zitat
Welchem den überhaupt?
Das Tut heißt "C++ im Kernel".

MFG ReduX

 

Einloggen