Autor Thema: memcpy wird nicht erkannt  (Gelesen 4682 mal)

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« am: 16. August 2007, 11:56 »
Hi
Ich (bzw mein compiler) braucht die memcpy-funktion.
Soweit kein Problem.

Aber: sie wird nicht anerkannt.
Also ich habe eine Funktion memcpy aber die wird ja vom compiler in _Z6memcpy*irgendwas* umbenannt. Ist dass der grund? wenn ja, wie verhindere ich dass??

ps.: der Fehler:
rr.cpp:(.text+0xf2): undefined reference ro `memcpy'

(Es wird eine funktion aufgerufen, die eine Struktur zurückgibt)

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 16. August 2007, 13:55 »
So wie es aussieht benutzt du einen C++ Compiler und der macht etwas namens "name mangling". Um dieses name mangling für eine bestimmte Funktion auszuschalten musst du bei der Deklaration ein extern "C" voranstellen, also:

extern "C" void memcpy(void *, const void *, size_t);
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 #2 am: 16. August 2007, 14:32 »
Jo, Danke, genau das suchte ich ;)

 

Einloggen