Я пытаюсь включить код 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 выглядят следующим образом:
образец1.ч
#include <stdio.h>
double add(const double a);
образец1.с
#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'
У меня такое чувство, что я упускаю что-то важное, но просто не вижу этого.
Любая помощь высоко ценится!
С уважением
Жюль
sample1.h? - person Jacob   schedule 20.11.2012nm sample1.o? - person aschepler   schedule 20.11.2012