私は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でこれを修正する人はいますか?
エラーの詳細は次のとおりです。