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;
}
コンパイルのために、最初に g++ で test1.o をコンパイルし、gcc で sample1.o をコンパイルします (g++ も試しましたが、違いはありません)。
g++ -c test1.cpp
gcc -c sample1.c
それは期待どおりに機能します。その後、次のようにプログラムをリンクしようとします。
g++ sample1.o test1.o -o test
これは、上記のエラーが発生する場所です
test1.cpp:(.text+0x11): undefined reference to `add'
何か重要なものを見落としているような気がしますが、それを見ることができません。
どんな助けでも大歓迎です!
よろしく
ジュール