C Datei in C++ Projekt



  • Hallo,
    habe folgendes Problem: Habe mir ein C++ Projekt angelegt, bestehend aus einer Form und einem Button.
    Nun habe ich diesem Projekt ein paar C-Dateien hinzugefügt.
    Nun möchte ich einen Aufruf auf eine Funktion machen, die sich in solch einer Datei befindet.
    Der Aufruf wird im ClickEvent des Buttons ausgeführt:

    void __fastcall Tmain::Button1Click(TObject *Sender)
    {
     runCFunction(); 
    }
    

    Nun ergibt sich beim COmpilieren folgende Meldung:

    [Linker Fehler] Unresolved external 'runCFunction()' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\OBJ\UNIT1.OBJ

    Habe alle Header Dateien included und weiß an dieser Stelle nicht mehr weiter.

    Ist der Aufruf der Funktion eventuell falsch? Bin über jeden Tipp dankbar!

    gruß Crabs



  • Du musst die .c-Dateien über 'Projekt' -> 'zum Projekt hinzufügen' auch in der Projektverwaltung bekannt machen. Einfaches Kopieren in das Projektverzeichnis reicht nicht aus.



  • ja hab ich gemacht.
    Nach längerem Suchen hab ich in der Borlandhilfe dies hier gefunden:

    Man muss die Funktion wie folgt bekannt geben:

    Bsp:

    extern "C" 
    {
     void Cfunc( int );
    }
    

    Nur jetzt meldet der Compiler folgendes:

    Deklaration nicht ordnungsgemäß abgschlossen.

    Kann aber kein Syntaxfehler entdecken. Bitte weiterhin um Hinweise



  • Du mußt schon auch den Code herzeigen, worin der Fehler auftritt.



  • #ifndef HEADERDATEI_H_
    #define HEADERDATEI_H_
    
    #include <stdio.h>
    #include "andereHeaderdatei.h"
    #include "nocheineHeaderdatei.h"
    #include "nochwasanderes.h"
    //------------------------------------------------------------------------------
    
    extern "C"            //beim compilieren bleibt der cursor vorm C stehen 
    {                     //mit oben gennanter Fehlermeldung
     void runCFunc();
    }
    

    Aufruf erfolgt dann in der C++ Datei:

    #include "headerdatei.h"
    .
    .
    .
    
    void __fastcall Tmain::Button1Click(TObject *Sender)
    {
    runCFunc();
    }
    


  • evt sind es nur die verwendeten Kommentarzeilen.

    -->
    #include "nochwasanderes.h"
    //----------------------------------------------------------------------------
    <---

    '//' war doch erst in C++ hinzugekommen, in C gab es nur den mehrzeiligen Kommentar mittels /* Akari ist der Größte */

    Ersetze mal in der C Unit die Kommentarzeichen, einen anderen Fehler sehe ich auf die Schnelle auch nicht.




Anmelden zum Antworten