第三方库导致“未定义的引用”编译器错误?

时间:2015-07-24 05:37:56

标签: c++ linker undefined-reference

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

#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并通过运行libcurlpp安装apt-get install libcurlpp-dev。还有什么我需要做的就是将编译器指向.cpp / .o文件并删除未定义的引用吗?

免责声明:是的,我确实阅读了this,不,这与我的问题无关,因为它没有具体谈到与第三方库的处理以及我的系统上安装了实施文件(.cpp.o)。

2 个答案:

答案 0 :(得分:3)

如果没有任何libcurlpp.alibcurlpp.so,我建议您再次下载libcurlpp-dev,包内有库文件。

答案 1 :(得分:2)

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

LIBS += -lcurlpp

.pro文件中。

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