gpt4 book ai didi

c++ - 如何解决体系结构 x86_64 的 undefined symbol

转载 作者:行者123 更新时间:2023-11-30 02:47:35 31 4
gpt4 key购买 nike

我正在尝试编译我的类,但得到以下结果。

g++ test.cpp -lconfig++ -stdlib=libstdc++
Undefined symbols for architecture x86_64:
"CommandParser::parseCommand(std::string)", referenced from:
_main in test-8f6e3f.o
"CommandParser::CommandParser()", referenced from:
_main in test-8f6e3f.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是我要编译的类:

#include "commandparser.h"

using namespace libconfig;

CommandParser::CommandParser(string configFile){
this->configFile = configFile;
}


CommandParser::CommandParser(){
this->configFile = CONFIG_FILE_NAME;
}

string CommandParser::parseCommand(string cmd){
Config cfg;

try{
cfg.readFile(this->configFile.c_str());
}
catch (const FileIOException &fi){
cerr << "I/O error while reading file." << std::endl;
exit(1);
}
catch (const ParseException &pe){
cerr << "Parse error at " << pe.getFile() << ":" << pe.getLine()
<< " - " << pe.getError() << endl;
exit(1);
}

try{
string path = cfg.lookup(cmd);
cout << "The path to the script is: " << path << endl;
return path;
}
catch(const SettingNotFoundException &e){
cerr << "No command with the name '"<<cmd<<"'"<<endl;
exit(1);
}
}

如何解决这个问题并让代码编译?我正在运行 Mac OSX 10.9。

最佳答案

我只是在这里猜测,这个猜测是您显示的代码不是 test.cpp 文件的一部分,而是在一个单独的文件中。这意味着你的构建命令

$ g++ test.cpp -lconfig++ -stdlib=libstdc++

只会构建test.cpp。它不会自动将其他源文件添加到编译过程中。

你必须显式构建所有相关的源文件,比如

$ g++ test.cpp commandparser.cpp -lconfig++ -stdlib=libstdc++

关于c++ - 如何解决体系结构 x86_64 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655495/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com