【问题标题】:Problem Using libcurl and SCons C++使用 libcurl 和 SCons C++ 的问题
【发布时间】:2011-05-25 19:30:41
【问题描述】:

我的问题与这个问题非常相似: https://stackoverflow.com/questions/4351877/link-libcurl-library-using-scons

我有一个必须使用 SCons 编译的 C++ 程序,并且我正在尝试使用 libcurl 将发布消息发送到服务器。我已将库与此链接:

#include "curl/curl.h"
#include "curl/types.h"
#include "curl/easy.h"

问题出现在这里(代码从主网站上删除):

CURL *curl;
CURLcode res;
struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
struct curl_slist *headerlist = NULL;
static const char buf[] = "Expect:";
curl_global_init(CURL_GLOBAL_ALL);

我在尝试编译时收到以下错误: 对 `curl_global_init' 的未定义引用

我已经被这个问题困扰了一个星期了,知道如何解决这个问题吗?

【问题讨论】:

    标签: c++ curl libcurl scons


    【解决方案1】:

    这是一个链接错误,它的发生是因为您可能没有告诉链接器将您的应用程序与 libcurl 链接,或者您没有指定正确的目录让它找到它。

    查看文档上的 Linking with Libraries 部分。

    编辑:

    在我做的一个小测试中,SConstruct 看起来像这样:

    Program('mycurl.c', LIBS='curl', 
                        LIBPATH=['/usr/lib', '/usr/local/lib'])
    

    使用scons -Q 编译成功并打印:

    gcc -o mycurl.o -c mycurl.c
    gcc -o mycurl mycurl.o -L/usr/lib -L/usr/local/lib -lcurl
    

    这正是您手动执行的操作。

    【讨论】:

    • 我了解如何在 gcc/g++ 中执行此操作,但是如何使用 scons?
    • 我为@Bob 添加了一个有效的 scons 示例。
    • 谢谢!我想我的主要问题是必须修改一个相当大且复杂的 SConstruct 文件,但文档和示例肯定会有所帮助。
    【解决方案2】:

    这是一个链接器错误,与编译无关。您是否链接到 curl 库?

    【讨论】:

    • 我不确定如何将库与 scons 链接...我应该在此处发布整个 SConstruct 文件吗?
    • 好吧,我不得不问你为什么要使用 scons 呢?就从我这里得到答案而言,发布文件是没有用的,因为我不会用 bargepole 碰 scons。
    • 我希望我不必这样做,但我的程序使用了 CLAM 音频框架,它大量使用了 scons。切换到 g++ 会更让人头疼
    【解决方案3】:

    我自己从未使用过 scons,但我找到了这个链接,其中包含一个关于使用 scons 在库中链接的简短教程。

    http://www.scons.org/doc/0.97/HTML/scons-user/x628.html

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多