Включение кода C в С++

Я пытаюсь включить C-код в простую С++-программу, но у меня возникла непредвиденная проблема - когда я пытаюсь скомпилировать программу, g++ дает следующую ошибку:

/tmp/cccYLHsB.o: In function `main':
test1.cpp:(.text+0x11): undefined reference to `add'

Я искал решение и нашел этот учебник:

http://www.parashift.com/c++-faq/overview-mixing-langs.html

Кажется, нет никакой разницы в моей программе, поэтому я немного потерял...

Моя программа на С++ выглядит следующим образом:

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;
}

Заголовок и функция sample1 выглядят следующим образом:

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;
}

Для компиляции я сначала скомпилирую test1.o с g++ и sample1.o с gcc (попробовал g++ тоже, но не имеет значения)

g++ -c test1.cpp

gcc -c sample1.c

Это работает так, как ожидалось. Впоследствии я пытаюсь связать программу следующим образом:

g++ sample1.o test1.o -o test

Здесь я получаю упомянутую выше ошибку

test1.cpp:(.text+0x11): undefined reference to `add' 

У меня такое ощущение, что я пропускаю что-то важное, но просто не вижу его.

Любая помощь очень ценится!

Привет

Jules

Ответы

Ответ 1

Он работает так, как ожидалось. Убедитесь, что вы случайно не скомпилировали sample1.c с помощью g++.

Ответ 2

Он работает на моей машине. Попробуйте GCC 4.7.0