Ответ 1
Он работает так, как ожидалось. Убедитесь, что вы случайно не скомпилировали sample1.c
с помощью g++
.
Я пытаюсь включить 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
Он работает так, как ожидалось. Убедитесь, что вы случайно не скомпилировали sample1.c
с помощью g++
.
Он работает на моей машине. Попробуйте GCC 4.7.0