0

MAC OS X の Eclipse で、未定義のシンボル エラーが永続的に発生します。エラーの原因がわかりません。

以下の GA_Operations および gaAlgorithm->run_algorithm..... を使用しようとすると、コンパイラに応じてエラーが発生します。

int Application::execute_Algorithm()
{

    if (this->GA_On)
{
    GA_Operations *gaAlgorithm = new GA_Operations();
    gaAlgorithm->run_algorithm(blocksSequence, bins);
}

else
{
    packingAlgorithm->run_algorithm(blocksSequence, bins); return 0;
}                       //

return 0;
}

表示されるエラーは次のとおりです。 Undefined symbols for architecture x86_64: "binproject::GA_Operations::run_algorithm(binproject::Blocks_Sequence&, binproject::BinContainer&)", referenced from: binproject::Application::execute_Algorithm() in Application.o "binproject::GA_Operations::GA_Operations()", referenced from: binproject::Application::execute_Algorithm() in Application.o

そして、宣言は次のとおりです。

class GA_Operations {
public:


GA_Operations();
~GA_Operations();


//call from main application to execute algorithm

void run_algorithm(Blocks_Sequence &b_seq, BinContainer &container);
... 

};

また、実装 (CPP) ファイルで宣言された関数を定義しようとすると、常に同様のエラーがスローされます。

何か案は?これは、このクラスでのみ発生するようです。

また、コードのインデントに問題がありましたらお詫び申し上げます。

4

2 に答える 2

0

これはリンカー設定の問題であることが判明しました。makefileの自動生成をオンにすると、問題は自動的に解決しました。

于 2013-01-24T06:14:53.060 に答える
0

表示されているエラーはリンカー エラーです。これは、コンパイラは何かが存在すると考えていますが、リンカーはそれを定義した (宣言していない) 場所を見つけることができないことを意味します。次のようなものが必要な場所:

GA_Operations::GA_Operations()
{
   // construct
}

void GA_Operations::run_algorithm(Blocks_Sequence &b_seq, BinContainer &container)
{
   // stuff
}

それってどこかにありますか?もしそうなら、それは入っているのと同じファイルにApplication::execute_Algorithmありますか?

そうでない場合、それはどこにありますか? これらの異なるファイルの内容が同じ実行可能ファイルになるように、プログラム全体を一緒にコンパイルするにはどうすればよいですか?

Eclipseで必要なことを実行する方法がまったくわかりません。それが可能であることは知っていますが、私は純粋なコマンドライン ツールに精通しています。.cpp上記の定義を含むファイルがプロジェクトの一部であり、作成した実行可能ファイルにコンパイルしてリンクする必要があることを Eclipse に伝える必要があります。

于 2013-01-21T23:29:53.853 に答える