Hallo, ich komme mit der Funktion f_gets (http://elm-chan.org/fsw/ff/en/gets.html) aus der FatFs von ElmChan einfach nicht zurecht. Dazu kommt das ich noch ein blutiger Anfänger bin. Ich verstehe den Prototyp der Seite einfach nicht und Beispiele dazu finden sich überhaupt nicht. Kann mir vielleicht jemand ein kleines Beispiel liefern bin echt am verzweifeln. Vielen Dank!
Hallo nochmal, habe jetzt ein bisschen umprobiert und bin hierdrauf gekommen. Jedoch erhalte ich jedesmal die Fehlermeldung das CCS nicht weiß was mit den Funktionen f_gets und f_puts zu tun ist (unresolved symbol f_gets, first referenced in ./UserExperienceDemo/load.obj). Die Prototypen der Funktion sind jedoch in ff.h definiert welche ich natürlich auch angegeben habe. Mein Code sieht folgender Maßen aus: #include <stdio.h> #include <stdint.h> #include <string.h> #include <stdlib.h> #include "msp430.h" #include "HAL_Board.h" #include "HAL_Buttons.h" #include "HAL_Dogs102x6.h" #include "HAL_SDCard.h" #include "HAL_Wheel.h" #include "SDCard.h" #include "ff.h" #include "check.h" #include "Low.h" #include "MassStorage.h" #include "SDCard.h" char *speicher; // Function Prototypes void ClearTempData(void); void die(FRESULT rc); void load() { FATFS fatfs; /* Work area (file system object) for drives */ FIL config; /* file objects */ FRESULT rc; /* FatFs function common result code */ // Register volume work area (never fails) f_mount(0, &fatfs); // Open file config.txt: rc = f_open (&config, "config.txt", FA_OPEN_EXISTING | FA_READ); if (rc) { die(rc); } f_gets (speicher, 300, &config); // Close the file f_close (&config); f_mount(0, NULL); // Erstellen und schreiben FIL data; /* file objects */ // Register volume work area (never fails) f_mount(0, &fatfs); rc = f_open (&data, "data.txt", FA_WRITE | FA_CREATE_ALWAYS); if (rc) { die(rc); } f_puts (speicher, &data); // Write to file f_close (&data); f_mount(0, NULL); ClearTempData(); MassStorage(); } Die Protoypfunktionen aus ff.h sehen so aus: int f_puts (const TCHAR*, FIL*); /* Put a string to the file */ TCHAR* f_gets (TCHAR*, int, FIL*); /* Get a string from the file */ Jetzt meine Frage was mache ich falsch? Kann mir diesen Fehler erhlich gesagt nicht erklären. Oder habe ich einen Fehler innerhalb der Funktionen gemacht? Sitze seit zwei Tagen drann und weiß einfach nicht weiter hoffe jemand kann mir helfen!
Hans-Jörg schrieb: > Hallo, > > ich komme mit der Funktion f_gets > (http://elm-chan.org/fsw/ff/en/gets.html) aus der FatFs von ElmChan > einfach nicht zurecht. Dazu kommt das ich noch ein blutiger Anfänger > bin. Ich verstehe den Prototyp der Seite einfach nicht und Beispiele > dazu finden sich überhaupt nicht. Kann mir vielleicht jemand ein kleines > Beispiel liefern bin echt am verzweifeln. Sieht mir wie eine ganz stinknormale fgets Funktion aus, so wie sie in jeder C Implementierung enthalten ist und in jedem stinknormalen C-Buch beschrieben ist.
Hans-Jörg schrieb: > weiß was mit den Funktionen f_gets und f_puts zu tun ist (unresolved > symbol f_gets, first referenced in ./UserExperienceDemo/load.obj). unresolved symbol ist eine typische Fehlermeldung vom Linker, der die Implementierung dieser Funktion nicht findet. > Die > Prototypen der Funktion sind jedoch in ff.h definiert Die interessieren nicht. Über die würde sich der Compiler beschweren. Du hast aber eine Fehlermeldung vom Linker, der die tatsächlichen Funktionen (deren Implementierung) nicht finden kann. Hast du das C-File, in welchem die Funktionen enthalten sind compiliert und dem Linker mit zum Frass vorgeworfen?
Was hat es mit diesem Abschnitt aus der Doku
1 | QuickInfo |
2 | Available when _USE_STRFUNC is 1 or 2. When it is set to 2, '\r's contained in the file are stripped out. |
auf sich? Kann es sein, dass die Implementierung in ff.c (?) mit einem #ifdef gekapselt ist und solange _USE_STRFUNC nicht auf mindestens 1 steht, nicht mitkompiliert wird?
Hast du auf der Projekthauptseite unter "Resources" die Verlinkung auf "Read First" gelesen? Da ist haarklein aufgeschlüsselt welche Konfigurationsoptionen es gibt (über #define) und was sie bewirken. Wenn _USE_STRFUNC auf 0 gesetzt ist (und so wie es aussieht ist das der Default), dann ist die Funktion f_gets nicht verfügbar. -> die entsprechende Option auf 1 setzen und das sollte es dann schon gewesen sein.
> unresolved symbol ist eine typische Fehlermeldung vom Linker, > der die Implementierungvdieser Funktion nicht findet. dessen bin ich mir bewusst dennoch danke. > Hast du das C-File, in welchem die Funktionen enthalten sind compiliert > und dem Linker mit zum Frass vorgeworfen? ja ff.c wird mit berücksichtig wenn du das meinst. > Available when _USE_STRFUNC is 1 or 2 Das wars! In der ffconf.h musste dies von 0 (default) auf 1 bzw. 2 gesetzt werden. Manchmal ist man einfach ein bisschen zu blöd! Vielen Vielend Danke!
Genau das gleiche Problem hatte ich auch - und hier die Lösung gefunden :-) Vielen Dank! Marko
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.