16

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' 

何か重要なものを見落としているような気がしますが、それを見ることができません。

どんな助けでも大歓迎です!

よろしく

ジュール

4

2 に答える 2

8

期待どおりに動作します。sample1.cを使用して誤ってコンパイルしていないことを確認してくださいg++

于 2012-11-20T16:43:17.313 に答える
3

それは私のマシンで動作します。GCC4.7.0をお試しください

于 2012-11-20T16:44:26.760 に答える