【问题标题】:g++ can't link curl lib filesg ++无法链接curl lib文件
【发布时间】:2018-01-16 03:05:33
【问题描述】:

我在让 g++ 链接 curl 库文件时遇到了一些问题。我正在使用带有 linux 开发插件和 Ubuntu Server 17.04 的 Visual Studio 2017。

curl-config --libs 给出了-Lcurl 的输出,我尝试将其添加到Project settings > Linker > Command Line > Additional options 中的链接器选项中。我还在编译选项中添加了--cflags 输出。这并没有解决问题。

然后我尝试了来自网站的源代码并使用了 make 和 make install。 curl-config --libs 给了我一个不同的输出 -L/usr/local/lib -lcurl。我更改了链接器中的选项,但仍然无效。

链接器输出说了很多“未定义的引用”,然后是 curl 方法。我在 cpp 文件中有#include <curl/curl.h>

有什么想法吗?
谢谢

【问题讨论】:

    标签: c++ linux curl linker


    【解决方案1】:

    是不是因为 .在你的包括?除此之外,Visual Studio 还需要知道头文件和库的搜索路径。它可以搜索构建输出或其一些默认目录,即 VC++ 目录。除此之外,您还必须使用附近的其他一些菜单告诉它在哪里搜索。

    【讨论】:

    • 抱歉,这是一个拼写错误。现在修好了。
    【解决方案2】:

    使用默认安装,您将使用-lcurlcurl 库指定为gcc,正如curl-config --libs 所报告的那样。要在 VCLinux 生成的 gcc 命令行上传递此信息,请将 curl 添加到 Linker / Additional Library Dependencies 行在 VS 项目属性中输入 em>输入。请注意,您只输入 curl,VCLinux 提供-l,gcc 链接器将其扩展为libcurl.a 的实际文件名(或libcurl.so,如果您正在链接共享库)。

    您通常不必指定库搜索路径,因为/usr/lib 等会自动位于库搜索路径中。例如,在 Debian 9 上,libcurl.a 位于 /usr/lib/i386-linux-gnu 中。但是,如果您在非标准位置安装 curl,请在 Linker / General 下添加 Additional Library Directories 的路径。如果您从 Linux 发行版安装 curl,请记住同时安装开发文件;在 Debian 上,这是包 libcurl4-gnutls-dev

    curl 与pkg-config 兼容,因此,作为直接输入路径和库名称的替代方法,您可以在C++ / All Options / 中指定%24(pkg-config --cflags libcurl) 附加选项%24(pkg-config --libs libcurl)链接器 / 所有选项 / 附加选项。 请注意,%24 是编码的 $,否则 Visual Studio 会尝试(但失败)将字符串解释为宏。

    【讨论】:

    • 非常感谢修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2021-11-01
    • 2012-10-19
    • 2011-09-25
    相关资源
    最近更新 更多