首页 > 解决方案 > 编译我的 C++ 代码(Xcode,终端)时出现链接错误

问题描述

我无法编译我在 Xcode 上编写的代码。代码在 Xcode 中编译得很好,但是当我尝试在终端中编译时,它给出了以下错误:

Undefined symbols for architecture x86_64:
"Parser::BeginParsing(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
_main in a2-9afc30.o
 ld: symbol(s) not found for architecture x86_64
  clang: error: linker command failed with exit code 1 (use -v to see invocation)

现在我知道 StackOverflow 上已经有很多关于这个问题的线程,但我真的无法修复我的错误。

我有一个文件 a2.cpp,其中有一个main函数,我在其中创建一个Parser P对象,然后调用 P 的函数。

这是我的 a2 文件的代码:

#include "Parser.h"
int main(int argc, char** argv) {
Parser P;
while (!std::cin.eof()) {

    // read a line of input until EOL and store in a string
    std::string line;
    std::getline(std::cin, line);

    
    P.BeginParsing(line);     
}
}

这是我的 Parser.h 文件:

#ifndef Parser_h
#define Parser_h
#include "Database.h"
#include "Graph.h"
class Parser {
public:
    int totalVertices = 0;
    std::vector<std::vector<std::string> > final_edges;
    std::vector<int> pathToFind;
    Database db;
    Graph graph;
    void createGraph();
    void ParseInputVertices(std::string str);
    void ParseVertices(std::string str);
    void ParseEdges(std::string str);
    void BeginParsing(std::string str);
};

#endif /* Parser_h */

这是 Parser.cpp 文件:

#include "Parser.h"


void Parser::BeginParsing(std::string str) {
std::regex reV ("V\\s([0-9]+)");
std::regex reE ("E\\s");
std::regex reS ("s\\s");
std::smatch matches;
std::smatch matches1;
std::smatch matches2;
if (std::regex_search(str,matches,reV)) {
    ParseVertices(str);
}else if (std::regex_search(str,matches1,reE)) {
    ParseEdges(str);
}else if (std::regex_search(str,matches1,reS)) {
    ParseInputVertices(str);
}

}

所有其他方法也已在 Parser.cpp 文件中定义。然而,这是从 a2.cpp 主函数调用的函数。

知道我能做些什么来解决这个问题。帮助将不胜感激。谢谢!

标签: c++compiler-errorscompilation

解决方案


推荐阅读