我在大学的 CS 课程中使用 xCode 用 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 - 在图形上执行 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 中纠正这个问题?
以下是错误详情: