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.OBJ

    Was 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.OBJ

    Hier meine Musterdatei zun testen:
    altdatei.h:

    int get_wert(void);
    

    und
    altdatei.c

    int 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 !


Anmelden zum Antworten