【问题标题】:Third party library causes 'undefined reference' compiler errors?第三方库导致“未定义引用”编译器错误?
【发布时间】:2015-10-14 16:16:37
【问题描述】:

我是 C++ 的新手。我正在创建一个简单的 GUI 应用程序,它使用 libcurlpp 访问网页,如下所示:

#include <sstream>
#include <string>

#include <curlpp/cURLpp.hpp>
#include <curlpp/Options.hpp>

using curlpp::Cleanup;
using curlpp::options::Url;

using std::ostringstream;
using std::string;

string MainWindow::getstr(const string &uri)
{
    Cleanup cleanup;

    ostringstream stream;
    stream << Url(uri);

    return stream.str();
}

但是,当我编译代码时,我收到大约 20 个不同的链接器错误,表明所有对 curlpp 的引用都是未定义的。果然,当我进入包含目录时,我看到的只是头文件。

如果重要的话,我在 Ubuntu 14.04 上并通过运行 apt-get install libcurlpp-dev 安装了 libcurlpp。我还需要做些什么来将编译器指向.cpp/.o 文件并删除未定义的引用吗?


免责声明: 是的,我确实阅读了this,不,它与我的问题无关,因为它没有专门讨论处理第三方库以及实现文件的位置(.cpp.o)安装在我的系统上。

【问题讨论】:

  • 出于好奇,是否有 libcurlpp.solibcurlpp.a 隐藏在 /usr/local/lib 文件夹(或其中的子目录)附近的某个地方?显示您最后的 build 行,它无法链接您的程序,以便我们都可以看到-lcurlpp 没有被错误地遗漏。否则,该链接问题是非常相关的。
  • @WhozCraig 不,我刚刚检查了/usr/lib/usr/local/lib 并且没有curlpp 库。我在.pro 文件中添加了QMAKE_CXXFLAGS += -lcurlpp(因为我使用的是Qt + qmake)到pass arguments to the compiler,但它仍然显示相同的错误。

标签: c++ linker undefined-reference


【解决方案1】:

您必须将库添加到链接器。如果您使用的是 Qt Creator,请编写

LIBS += -lcurlpp

.pro 文件中。

编辑:您必须以这种方式添加所有库。正如评论所说,对于 cURL++(cURL C 库的包装器),您还需要 -lcurl

【讨论】:

  • 这为我消除了大部分错误,但在我添加libcurl (LIBS += -lcurl -lcurlpp) 之前,我仍然有一些链接问题。请更新您的答案以反映这一点(谢谢!)。
【解决方案2】:

如果没有libcurlpp.alibcurlpp.so,建议你重新下载libcurlpp-dev,包里面有库文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多