0

重複の可能性:
未定義の参照/未解決の外部シンボルエラーとは何ですか?それを修正するにはどうすればよいですか?

最近C++でインタプリタの作業を始めましたが、何を試してもベクトルや配列を外部クラスのメソッドに渡せないことに悩まされたため、作業したものをすべて削除しました。結局のところ、 intも別のクラスに渡すことはできません。CまたはJavaに頼る前に、C ++にもう一度チャンスを与えることにしましたが、コンパイラーはまだ期待どおりに機能しません。しばらく使っていないので、C ++の簡単なことを忘れているかもしれませんが、これは十分に簡単なようです。私の問題は、同じファイルで定義されていない他のクラスのメソッドに引数を渡すことができないことです。これが私がやろうとしていることです:

メイン:main.cpp

#include "myclass.h"

int main() {
    MyClass test;
    int n = test.add(25, 30);
    return n;
}

ヘッダー:myclass.h

class MyClass {
public:
    int add(int a, int b);
};

クラスの実装:myclass.cpp

#include "myclass.h"

int MyClass::add(int a, int b) {
    return a + b;
}

g++ main.cppこれをyieldsでコンパイルする

/tmp/ccAZr6EY.o:関数main': main.cpp:(.text+0x1a): undefined reference toMyClass :: add(int、int)'でcollect2:エラー:ldが1つの終了ステータスを返しました

私は一体何を間違っているのですか?また、関数がパラメーター化されていなくても、コンパイラーは同じことを私に怒鳴ります。そのため、ヘッダーに問題があるはずです。

どんな助けでも大歓迎です-ありがとう!

4

1 に答える 1

2

両方のファイルをコンパイルする必要があります

g++ main.cpp myclass.cpp

main.cppのみをコンパイルする場合、コンパイラはMyClass::addヘッダーでの宣言を検出しますが、リンカは後でMyClass::addジャンプ先の実装を検出できません。

于 2013-01-19T16:13:35.007 に答える