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.
-
mein problem führt auf dies zurück:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-231341.html