0

私はxCodeを使用して、大学のCSコース用にC++で開発しています。今のところ問題ありません。しかし、xCode内で理解できないエラーが発生しました。

エラーは次のとおりです。

Undefined symbols for architecture x86_64:
  "shortestpath(double const* const*, int, int, double*, int*, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > >)",     referenced from:
  _main in main.o

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私はベルマンフォードアルゴリズムの簡単な実装を行っています。私のプログラムは次のように設定されています。

main.cc-グラフの.txtファイルを取り込んで、それをreadGraph関数に送信します。readGraph.cc/.h-グラフファイルを取得して隣接行列に読み込み、その他の必要な情報を引き出しますbellmanFord.cc/.h-グラフに対してベルマンフォードアルゴリズムを実行します。

私のメインファイルは次のようになります。

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <utility>
#include <vector>
#include "bellmanford.h"
#include "readfile.h"

using namespace std;


int main(int argc, const char * argv[])
{

    //check the command line length
    if(argc < 2)
    {
        //print the error
        cout << "Not enough command line arguments!" << endl;
        //return to exit with error
        return 1;
    }



    //open the graph file
    ifstream fin;
    fin.open(argv[1]);


    //get the length
    int length;
    fin >> length;


    //make the references to send
    double** matrix;
    vector<pair<int, int>> pairVector;
    double* dist;
    int* prev;

    //make the matrix, and lists for bellmanford
    readfileTOMatrix(fin, matrix, length);
    readfileTOpairs(pairVector, matrix, length);
    make_Prev_and_Dist(prev, dist, length);



    shortestpath(matrix, length, 0, dist, prev, pairVector);


}

エラーは、shortestpath(bellmanFord.cc/.hの唯一の関数)の呼び出しの下部で発生しています。これをコメントアウトすると、問題なく動作します。私はチェックしてダブルチェックしましたが、すべてが正しく設定されていると確信しています。

私は私が思うmakeファイルでこれを回避できることを理解しています....しかしxCodeでこれを修正する人はいますか?

エラーの詳細は次のとおりです。 エラーの詳細

4

1 に答える 1

0

.h と .cc の間に非常に小さな違いがありました。実際の宣言で欠落していたプロトタイプの「&」を 1 つ忘れただけです。すべてが今働いています!

于 2012-11-27T00:59:26.980 に答える