0

我在大学的 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 中纠正这个问题?

以下是错误详情: 错误详情

4

1 回答 1

0

我的 .h 和 .cc 之间的差异很小。只是忘记了原型中实际声明中缺少的一个“&”。现在都在工作!

于 2012-11-27T00:59:26.980 回答