Einbinden von C-Code in C ++
Ich versuche, C-Code in ein einfaches C ++ - Programm einzuschließen, aber ich stieß auf ein unerwartetes Problem - wenn ich versuche, das Programm g ++ zu kompilieren, wird der folgende Fehler angezeigt:
/tmp/cccYLHsB.o: In function `main':
test1.cpp:(.text+0x11): undefined reference to `add'
Ich habe nach einer Lösung gesucht und dieses Tutorial gefunden:
http://www.parashift.com/c++-faq/overview-mixing-langs.html
Es scheint keinen Unterschied zu meinem Programm zu geben, also bin ich ein bisschen verloren ...
Mein C ++ Programm sieht so aus:
test1.ccp
#include <iostream>
using namespace std;
extern "C" {
#include "sample1.h"
}
int main(void)
{
int x= add(3);
cout << "the current value of x is " << x << endl;
return 0;
}
Der Header und die Funktion von sample1 sehen folgendermaßen aus:
sample1.h
#include <stdio.h>
double add(const double a);
sample1.c
#include "sample1.h"
double add(const double a)
{
printf("Hello World\n");
return a + a;
}
Zum Kompilieren kompiliere ich zuerst eine test1.o mit g ++ und sample1.o mit gcc (probiert auch g ++, macht aber keinen Unterschied)
g++ -c test1.cpp
gcc -c sample1.c
Das funktioniert wie erwartet. Danach versuche ich das Programm so zu verlinken:
g++ sample1.o test1.o -o test
Hier bekomme ich den oben genannten Fehler
test1.cpp:(.text+0x11): undefined reference to `add'
Ich habe das Gefühl, dass mir etwas Wichtiges fehlt, aber ich kann es einfach nicht sehen.
Jede Hilfe wird sehr geschätzt!
Grüße
jules