Включение кода C в C ++
Я пытаюсь включить код 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
Кажется, в моей программе нет разницы, поэтому я немного растерялся ...
Моя программа на C ++ выглядит так:
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'
У меня такое чувство, что я упускаю что-то важное, но просто не вижу этого.
Любая помощь высоко ценится!
С уважением
Жюль