C-Source in Borland Builder Projekt
-
Hallo
Ich möchte C-Source aus einem alten Projekt in ein Borland Projekt einbinden.
Dazu habe ich das C-Sourcefile ins Projekt eingefügt und im C++ File in dem das Hauptform definiert ist als #include angegeben.
Wenn ich nun eine Funktion aus den c-File verwenden will, findet der Linker die Funktion nicht.
[Linker Fehler] Unresolved external 'win_modul_oeffnen(int)' referenced from C:\AGH\SOURCE\BC6_ AP4\MAIN.OBJWas mache ich falsch?
Vielen Dank für Eure Hilfe!
-
Hallo
vermutlich ist die hinzugefügte C-Datei nicht im Projekt-Verzeichnis. Dann must du noch den Pfad der C-Datei in den Projektoptionen zu den Include-Verzeichnissen hinzufügen.
Sollte das nicht der Fall sein, dann schau doch mal, wo die fehlende Funktion deklariert und wo sie implementiert ist.Übrigens included man keine C*- Dateien, sondern nur H*-Dateien.
bis bald
akari
-
danke
Ja klar es ist das .h File das ich include.
Die Datei ist im Projektverzeichniss. Die C-Sourcedatei wird auch kompiliert.
Habe ich das include ich drin, dann findet der Compiler richtigerweise den Fehler :
[C++ Fehler] Main.cpp(45): E2268 Aufruf der undefinierten Funktion 'win_modul_oeffnen'Mit Include hat erst der Linker ein Problem ??
Was kann ich machen?
Vielen Dank
-
Hallo
Das ist der allgemeine Unterschied zwischen Dekalration und Implementation.
Mit dem Include machst du die Dekalration der betreffenden Funktion bekannt, die in der Headerdatei steht. Damit kommt der Compiler zurecht.
Aber der Linker braucht noch die Implementation der Funktion. Und die steht in der c-Datei, deshalb mus einerseits die c-Datei im Projekt eingebunden sein, anderseits der Pfad in den Include-Pfads stehen.bis bald
akari
-
Also
Die Implementation (in *.c) ist dem Projekt zugefüht worden.
Der Pfad steht in den Includdateien...
Aber es kommt immer noch [Linker Fehler] Unresolved external 'get_wert()' referenced from C:\BC6TEST\TEST.OBJHier meine Musterdatei zun testen:
altdatei.h:int get_wert(void);und
altdatei.cint get_wert(void) { return(5); }in einer neuen Anwndung habe ich in Botton gemacht und dort steht:
void __fastcall TForm1::Button1Click(TObject *Sender) { int a; a = get_wert(); }Ich weiss, macht keinen sinn, aber nur als test.
Die Datei altdatei.c habe ich mit "Dem Projekt hinzufügen " eingebunden.
Der Pfad der Datei ist beim Includepfad drin.
Aber es geht nicht.......Was kann ich noch machen?
Vielen Dankt für die Hilfe.
-
Ich habe die Lösung....
Die eingebundene C-Datei muss die Endung .CPP haben, dann geht !