Hallo Leute, ich programmiere derzeit einen ATtiny26 mit CodeVision C-Compiler. Mein Problem ist, denke ich, im wesentlichen ein reines C Problem. Ich verwende einen DAC12 Bit. Für die Ansteuerung des DACs schreibe ich eine Library. Nun möchte ich diese Library später vielleicht in anderen Projekten verwenden, deshalb wollte ich folgendermaßen vorgehen: In der Library werden nur symbolische Zuweisungen gemacht, z.B. CLK=1; SDI=0; CLK=0; Noch vor dem includen der Library muss man dann den Symbolen den richtigen PORT zuweisen, also insgesamt in etwa so: #define CLK PORTA.7 #define SDI PORTA.6 #include <dac.h> Wenn ich nun kompiliere, dann bekomme ich die Fehlermeldung "undefined Symbol", also hat er den Text nicht ersetzt. Wie bekomme ich dieses Problem in den Griff? Stehen die define Befehle in der Library geht es. Dies ist aber nicht Sinn und Zweck, da ich die Library bei anderen Projekten mit anderer Pinbelegung auch verwenden möchte. P.s.: Hab den gleichen Thread auch im µC Forum eröffnet, da ich mir nicht sicher bin, wo er denn jetzt genau hingehört ?! Gruß und Mahlzeit
"Wenn ich nun kompiliere, dann bekomme ich die Fehlermeldung "undefined Symbol", also hat er den Text nicht ersetzt." Welches Symbol ist undefiniert bzw. welcher Text wurde nicht ersetzt? CLK, SDI oder PORTA? Du solltest dir die Ausgabe vom Präprozessor anzeigen lassen und dann die Frage überdenken. Optionen beim GCC: -E (nur Preprozessor laufen lassen) und -o Ausgabedatei
Hallo Stefan, das erste Symbol, welches auftaucht, hier CS, bemäkelt er als undefined symbol. Die Ausgabe des Präprozessors werde ich mir mal anschauen. Es kann ja auch sein, dass er in der Library auch keine Pre-Prozessor funktionen unterstützt. Dann muss ich mir was anderes überlegen.
Anmerkung: Vermeide es, von "library" zu sprechen, wenn Du nur eine Headerdatei (*.h) meinst. Das hilft beim Verständnis Deines Problemes. Eine Library (*.a bei gcc, *.lib bei anderen) ist etwas ganz anderes, nämlich bereits fertig übersetzter Binärcode, der zu Deinem Programm hinzugelinkt wird. Libraries werden nur vom Linker verarbeitet; irgendwelche Präprozessoranweisungen haben dabei keinerlei Auswirkungen.
Das Symbol sehe ich aber in deinem fehlerproduzierenden Quelltext nicht. Hast du inzwischen einen Weg gefunden, um dir die Präprozessor-Ausgabe anzusehen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.