【问题标题】:Linker error with iniparseriniparser 的链接器错误
【发布时间】:2014-04-02 17:38:24
【问题描述】:

我正在尝试从源代码编译项目并收到几个未定义的引用链接器错误

g++  src/Misc/Utils.o src/Misc/Timer.o  ... -o bin/nsnake  -lncurses -liniparser

src/Config/INI.o: In function `INI::load(std::string)':                    
INI.cpp:(.text+0xbb): undefined reference to `iniparser_load(char const*)'
...
INI.cpp:(.text+0x726): undefined reference to `iniparser_dump_ini(_dictionary_*, _IO_FILE*)'

collect2: error: ld returned 1 exit status
make: *** [nsnake] Error 1

我已经检查了/lib/usr/lib,它们都包含libiniparser.so.0libiniparser.so -> libiniparser.so.0 符号链接。我还有什么遗漏的吗?

【问题讨论】:

  • 库中的函数可能有 C 链接,并且缺少它们的声明extern "C"
  • 这实际上回答了我的问题。 :) 我检查了以前的提交,由于某种原因,作者删除了本地版本的 iniparser。回滚后,我能够编译得很好。

标签: c++ c++11 linker-errors fedora ini


【解决方案1】:

我必须添加extern "C" { #include <iniparser.h> } 以便编译器正确链接。

【讨论】:

    猜你喜欢
    • 2016-08-01
    • 2015-08-18
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多