0

试图获得一个非常简单的 libconfig++ 工作示例。但是,由于编译器选项“-stdlib=libc++”和“-std=c++11”,我遇到了以下链接错误。

环境

达尔文 iMac.local 12.2.0

达尔文内核版本 12.2.0

xnu-2050.18.24~1/RELEASE_X86_64 x86_64

资源

  Config cfg;

  cfg.readFile( "example.cfg" );

  string value = "";

  const string& key = "application.base";

  cfg.lookupValue( key, value );

建造

clang++ -o main main.cpp -lconfig++ -stdlib=libc++ -std=c++11

错误

Undefined symbols for architecture x86_64:   "libconfig::Config::lookupValue(char   const*, std::__1::basic_string<char, std::__1::char_traits<char>,   std::__1::allocator<char> >&) const", referenced from:  
      libconfig::Config::lookupValue(std::__1::basic_string<char,   std::__1::char_traits<char>, std::__1::allocator<char> > const&,   std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)   const in main-mFa01w.o ld: symbol(s) not found for architecture x86_64 clang:   error:   linker command failed with exit code 1 (use -v to see invocation)  
4

1 回答 1

1

错误消息表明此成员函数:

libconfig::Config::lookupValue(const std::string& path, std::string& value) const;

被编译-stdlib=libc++(可能作为内联,但我猜)。并且它反过来调用这个成员函数:

libconfig::Config::lookupValue(char const* path, std::string& value) const

然而,后一个函数不是用-stdlib=libc++.

最可能的解决方法是使用-stdlib=libc++.

于 2013-01-19T17:41:51.487 回答