我使用xCode在C ++中开发我在大学的CS课程。到目前为止我对它没有任何问题。但是,我遇到了一个我无法在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 - 在图上执行bellman ford算法。
我的主文件如下所示:
#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中纠正这个问题?
以下是错误详情:
答案 0 :(得分:0)
我的.h和.cc之间存在很小的差异。忘了一个“&amp;”在实际声明中遗漏的原型中。一切正常!