Gast
#857663
Guten Morgen! Ich versuche, mit GCC für den MSP430-Controller eine Bibliothek zusammenzustellen, damit ich meine Funktionen nicht dauernd kopieren muss. Dazu habe ich mir das Tutorial auf dieser Seite durchgelesen (http://www.mikrocontroller.net/articles/Libraries). Zum testen habe ich mir folgende Dateien erstellt: Die Funktion typechange.c: #include "libtest.h" int typechange(char c) { return (int) c; } Und eine Header-Datei libtest.h mit folgendem Inhalt: int typechange(char c); Ich arbeite unter Windows und habe "mspgcc" installiert. Auf der Zeile compiliere ich mit dem Befehl "msp430-gcc.exe -c typechange.c". Dann bekomme ich folgerichtig das Object-File "typechange.o". Im Anschluss packe ich das Object-File zur eigentlichen Library mit "msp430-ar.exe -rcs libtest.a typechange.o". Funktioniert optimal, ich bekomme die Library "libtest.a". Dann schreibe ich mir meine Main (Datei main.c): #include "libtest.h" int main(void) { return typechange('A'); } Auf der Zeile tippe ich zum linken: "msp430-gcc.exe -o test.com main.c -L. -ltest". Keine Fehlermeldung, die Datei "test.com" wird erzeugt und lässt sich ausführen. Nun kann ich aber den Rückgabewert, der "65" sein sollte, nicht kontrollieren, da er auf der Konsole nicht angezeigt wird. Nun möchte ich die erstelle Library in IAR verwenden. Beim Ausführen bekomme ich allerdings die Fehlermeldung "Error[e46]: Undefined external "typechange" referred in main ( C:\Documents and Settings\daniel\Desktop\iartest\Debug\Obj\main.r43 )" Nun frage ich mich, warum der Linker "typechange" nicht auflösen kann und was ich dagegen machen kann. Vielleicht könnt ihr mir dabei ja helfen. Vielen Dank schonmal! Daniel