【问题标题】:Undefined symbol curl_easy_init for architecture x86_64架构 x86_64 的未定义符号 curl_easy_init
【发布时间】:2021-12-07 17:01:58
【问题描述】:

在 macOS/XCode/C++ 上构建我的迷你项目时,我得到了主题行中提到的链接器错误,我不明白为什么会得到它,以及我可以做些什么来避免它。

我的代码非常简单,本质上是XCode在创建项目(命令行应用程序)时自动生成的代码,加上我自己添加的两条curl相关的行:

#include <iostream>

#include <curl/curl.h>

int main(int argc, const char * argv[]) {
    CURL *easy_handle = curl_easy_init();
    
    std::cout << "Hello, World!\n";
    return 0;
}

链接器抱怨符号 _curl_easy_init() 丢失,尽管我已经将 libcurl.4.tbd 框架添加到项目中,并检查了详细信息XCode 中的框架显示了相关符号已导出。至少它看起来是这样的。

所以我真的不知道问题是什么以及如何解决它。提前感谢您的任何提示或建议。

【问题讨论】:

    标签: c++ xcode macos libcurl


    【解决方案1】:

    尽管看起来,将框架添加到左侧窗格中项目导航器的链接框架列表中是不够的。您还必须将其添加到构建目标(在本例中为您的应用程序)的“常规”设置中的“框架、库和嵌入式内容”中。

    几个屏幕截图应该可以清楚地说明这一点。在这种情况下,我将 SystemConfiguration 框架添加到我的构建中:

    之前: 后: 然后再次构建您的项目。

    【讨论】:

    • 感谢您的帮助,包括屏幕截图!我的“框架”文件夹下没有“链接框架”子文件夹。在我的例子中,我想将 cURL 框架添加到我的项目中,所以我单击右侧窗格中“框架、库等”下的“+”号,选择 libcurl.4.tbd,然后单击“确定”。结果是我在左窗格的框架标题下看到了 tbd 文件,仅此而已。右侧窗格中未添加任何内容。似乎我做错了什么,但是什么?
    • 我忘记了,但我不确定它是否有任何影响,所以我不会担心。
    【解决方案2】:

    我找到了解决方案。我必须在“Target > Build Phases > Link Binary With Libraries”下添加库,而不是在“Target > General > Frameworks and Libraries”下,即使它也会自动出现在后者下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 2012-07-20
      • 1970-01-01
      • 2015-08-23
      • 2014-05-27
      • 2017-07-06
      • 2016-06-20
      • 2016-06-14
      相关资源
      最近更新 更多