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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage