c++ - 编译我的 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 主函数调用的函数。
知道我能做些什么来解决这个问题。帮助将不胜感激。谢谢!
解决方案
推荐阅读
- telegram - 如何处理 Telegram bot API 中错过的测验答案?
- multithreading - Keras/tensorflow 细粒度多线程控制
- reactjs - 加载路径时的回调或 setState
- docker - 用于网络应用程序开发的 Docker 设置
- google-people-api - 从 google people api 获取用户的电话号码?
- wpf - 将应用程序迁移到 .NET Core 3.1 后,WPF WebBrowser 自定义右键菜单停止工作
- sql - 长时间运行的查询sql
- javascript - 无法在Javascript fetch中提取for循环内的数据
- winforms - 在.Net Core WinForm App的工具箱中找不到按钮和gridview控件
- azure - Disable AFD Backend Pool's Backend Host with Azure Cli or Azure REST API