libconfig 体系结构的未定义符号 x86_64
libconfig Undefined symbols for architecture x86_64
我正在尝试 运行 我的第一个使用 C++ 中的 libconfig 的基本程序。我用 g++ testing.cpp -o testing
.
编译
#include <iostream>
#include <cstdlib>
#include <libconfig.h++>
using namespace std;
using namespace libconfig;
int main(){
Config cfg;
// Read the file. If there is an error, report it and exit.
//try
//{
cfg.readFile("/tmp/eg-report-hutapp02q-161017-08-26/eg.cfg");
//}
/*catch(const FileIOException &fioex)
{
cerr << "I/O error while reading file." << endl;
return(EXIT_FAILURE);
}
catch(const ParseException &pex)
{
cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine()
<< " - " << pex.getError() << std::endl;
return(EXIT_FAILURE);
}*/
cout << "This compiled" << endl;
return 0;
}
当我在 rhel6 上 运行 时,出现以下错误(仅第一行):
testing.cpp:(.text+0x13): undefined reference to ``libconfig::Config::Config()'
当我在 Mac 达尔文内核 15.5.0 上 运行 时,出现此错误:
Undefined symbols for architecture x86_64:
"libconfig::Config::readFile(char const*)", referenced from:
_main in testing-59bdf7.o
"libconfig::Config::Config()", referenced from:
_main in testing-59bdf7.o
"libconfig::Config::~Config()", referenced from:
_main in testing-59bdf7.o
"typeinfo for libconfig::ParseException", referenced from:
GCC_except_table0 in testing-59bdf7.o
"typeinfo for libconfig::FileIOException", referenced from:
GCC_except_table0 in testing-59bdf7.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这只是下载的 libconfig-1.5.tar.gz 文件中的一个示例。我在 mac 上完成了 makefile 过程,得到了那个错误,然后 brew 安装了 libconfig-1.6,但仍然收到同样的错误。我在这里不知所措。感谢任何帮助。
您需要link将库添加到您的可执行文件中。
如 documentation 中所述,将 -lconfig++
添加到您的编译器标志,它应该可以工作。
基本上这会告诉编译器在哪里可以找到库源代码(类、函数等),以便在需要时可以将它们正确导入到您的程序中。
我正在尝试 运行 我的第一个使用 C++ 中的 libconfig 的基本程序。我用 g++ testing.cpp -o testing
.
#include <iostream>
#include <cstdlib>
#include <libconfig.h++>
using namespace std;
using namespace libconfig;
int main(){
Config cfg;
// Read the file. If there is an error, report it and exit.
//try
//{
cfg.readFile("/tmp/eg-report-hutapp02q-161017-08-26/eg.cfg");
//}
/*catch(const FileIOException &fioex)
{
cerr << "I/O error while reading file." << endl;
return(EXIT_FAILURE);
}
catch(const ParseException &pex)
{
cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine()
<< " - " << pex.getError() << std::endl;
return(EXIT_FAILURE);
}*/
cout << "This compiled" << endl;
return 0;
}
当我在 rhel6 上 运行 时,出现以下错误(仅第一行):
testing.cpp:(.text+0x13): undefined reference to ``libconfig::Config::Config()'
当我在 Mac 达尔文内核 15.5.0 上 运行 时,出现此错误:
Undefined symbols for architecture x86_64:
"libconfig::Config::readFile(char const*)", referenced from:
_main in testing-59bdf7.o
"libconfig::Config::Config()", referenced from:
_main in testing-59bdf7.o
"libconfig::Config::~Config()", referenced from:
_main in testing-59bdf7.o
"typeinfo for libconfig::ParseException", referenced from:
GCC_except_table0 in testing-59bdf7.o
"typeinfo for libconfig::FileIOException", referenced from:
GCC_except_table0 in testing-59bdf7.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这只是下载的 libconfig-1.5.tar.gz 文件中的一个示例。我在 mac 上完成了 makefile 过程,得到了那个错误,然后 brew 安装了 libconfig-1.6,但仍然收到同样的错误。我在这里不知所措。感谢任何帮助。
您需要link将库添加到您的可执行文件中。
如 documentation 中所述,将 -lconfig++
添加到您的编译器标志,它应该可以工作。
基本上这会告诉编译器在哪里可以找到库源代码(类、函数等),以便在需要时可以将它们正确导入到您的程序中。