Forum: Mikrocontroller und Digitale Elektronik Neueinstieg in "Eclipse" - C Projekt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Frank H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Freunde der Programmierung,

Wollte gerade mal ein bisschen was mit "Eclipse" machen und siehe da, 
schon das erste Problem.

Wenn ich eine externe Headerdatei einbinden möchte, erkennt er zwar die 
Struktur die dort enthalten ist aber nicht die Funktionen.
Woran kann das liegen?
1
#include <stdio.h>
2
#include "C:\Users\Frank\Dropbox\C - Programmieren\C-Librarys\trunk\Kommando Interpreter\cmd.h"
3
4
void *cmdOK ( void *x , void *y )
5
{
6
  printf("CMD_OK\r\n");
7
8
  return (char*)0;
9
}
10
11
12
int main ()
13
{
14
  cmd_struct cmd[] =
15
  {
16
    {"Relais setzen"     ,   "-KS"  ,   cmdOK   },
17
    {"Relais löschen"    ,   "-KU"  ,  cmdOK  },
18
    {"Uhrzeit stellen"    ,  "-US"  ,  cmdOK  },
19
    {"Spannung lesen"    ,  "-UL"  ,  cmdOK  },
20
    {"Strom lesen"      ,  "-IL"  ,  cmdOK  },
21
    {"Leistung lesen"    ,  "-LL"  ,  cmdOK  },
22
    {"Fehler lesen"      ,  "-FL"  ,  cmdOK  },
23
  };
24
25
  srchCmd( NULL , NULL ); // Die Funktion kennt er wohl nicht.. Obwohl sie in der .c und .h vorhanden ist.
26
27
    return 0;
28
}

von Wunderberg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
"C:\Users\Frank\Dropbox\C - Programmieren\C-Librarys\trunk\Kommando 
Interpreter\cmd.h"

1. Vermeide Leerzeichen
2. \ muss \\ sein

von Markus F. (mfro)


Bewertung
1 lesenswert
nicht lesenswert
Absolute (auch noch DOS-) Pfade sind keine gute Idee in 
include-Statements.
Backslashes darin sind überhaupt keine gute Idee.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Mach mal ein Copy&Paste aus der Konsole mit den Fehlermeldungen beim 
Compilieren.

Den Pfad zur include Datei gibt man besser bei den Projekteinstellungen 
an.

Backslash hat in C eine spezielle Bedeutung und dürfte hier eher 
schlecht funktionieren.

von Frank H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das ist der Output
1
11:49:15 **** Inkrementelles Erstellen von Konfiguration Debug für Projekt Kommando Interpreter ****
2
Info: Internal Builder is used for build
3
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o main.o "..\\main.c" 
4
..\main.c: In Funktion »main«:
5
..\main.c:21:13: Warnung: Variable »cmd« wird nicht verwendet [-Wunused-variable]
6
gcc -o "Kommando Interpreter.exe" main.o 
7
main.o: In function `main':
8
C:\Users\Jan Homann\Desktop\Kommando Interpreter\Debug/../main.c:32: undefined reference to `srchCmd'
9
collect2: ld gab 1 als Ende-Status zurück
10
11
11:49:15 Build Failed. 1 errors, 1 warnings. (took 262ms)

von Frank H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wo kann ich den Pfad zu den .h einstellen in dem neuen Eclipse?

von Lutz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn du das mit Anführungszeichen machst, brauchst du die headerdatei 
einfach nur in das Projekt kopieren (z.B. in den Ordner iclude, sofern 
angelegt). Wenn das immer noch nicht reichen sollten, im Projektexplorer 
mal rechte Maustaste auf dem Projet und "Refresh" drücken.

von Frank H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das haut leider nicht hin. Auch wenn ich die Dateien direkt zu der 
main.c kopiere..

von Frank H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ah, habe das mit dem "Aktualisieren" überlesen.
Kann ich denn die Dateien nicht aus dem anderen Pfad benutzen?

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Frank H. schrieb:
> main.o: In function `main':
> C:\Users\Jan Homann\Desktop\Kommando Interpreter\Debug/../main.c:32:
> undefined reference to `srchCmd'
> collect2: ld gab 1 als Ende-Status zurück

Das ist ein Linker Fehler. Du hast vergessen ein .o oder eine Lib mit 
einzulinken.

Kann auch sein das ein oder mehrere .c File(s) im Projekt fehlen.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Zu den meisten *.h Dateien gehört auch eine gleichnahmige *.c Datei 
(Quelltext) oder eine *.o Datei (bereits Compiliert). Diese musst du zu 
deiner Projektkonfiguration hinzufügen.

Die *.h Datei enthält nur die Namen der Funktionen, die von einer *.c 
oder *.o Datei bereitgestellt wird. Der Linker fügt alle Fragmente 
zusammen und meldet die oben gezeigte Fehlermeldung, wenn die Funktion 
fehlt. Das heißt, es fehlt eine *.c oder *.o Datei.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.