【问题标题】:C++ - Switching from G++ to Xcode (and clang)C++ - 从 G++ 切换到 Xcode(和 clang)
【发布时间】:2013-12-28 05:20:56
【问题描述】:

我正在尝试将sample program 用于gloox 库(C++ 的XMPP 客户端库),我最终将集成到(以及其他)iOS 应用程序中。实现这一点的一个明显(但令人沮丧的困难)步骤是在 Xcode 中使用 C++ 代码(通常使用 clang 编译器)。

我是如何使用G++编译的:

g++ -o bot bot.cpp -lgloox -lpthread

我在Xcode 中尝试过的:

在我的目标构建设置下:

  • 去了Other C++ Flags并添加了-lpthread-lgloox,所以理论上所需的库是链接的。
  • 去了Header Search Paths并添加了/usr/include/usr/local/include,都设置为recursive. gloox标头在/usr/local/include中找到,因此标头理论上应该可用。

但是,当我去编译这个可憎的东西时,我得到了这些错误:

有人可以帮我理解这些吗?

编辑:我已经在互联网上进行了广泛的搜索,但无济于事。

【问题讨论】:

    标签: c++ ios xcode clang


    【解决方案1】:

    您需要从库搜索路径中删除 /usr/include。默认情况下它已经包含在内,并且尝试再次添加它可能会导致它最终覆盖编译器提供的一些头文件,结果很不幸。


    The link errors you got when you did this 看起来在链接时没有使用 gloox 库,所以现在失败了。 这是一个进步!——如果你进入链接阶段,编译现在就很好了。

    转到您的项目设置(单击左侧列顶部的项目名称),转到“构建阶段”选项卡,打开“将二进制文件与库链接”阶段,然后单击 + 按钮。然后找到libgloox.dylib(可能在/usr/local/lib)并添加。

    【讨论】:

    • :是的!什么是 .dylib 文件?我不明白为什么库需要的不仅仅是头文件/实现文件。我不明白为什么所有必需的库文件不能只是#includeed =/
    • .dylib 是实际的库文件,所有代码都在其中。头文件只是向编译器描述它是如何使用的。
    猜你喜欢
    • 2017-09-25
    • 2014-03-11
    • 2013-03-30
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多