Neueinstieg in "Eclipse" - C Projekt

Gast #5502268
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
}
#5502274
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.
Gast #5502275
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)
Gast #5502320
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.
#5502404
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.
Gast #5502445
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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.