【问题标题】:How to set "C++ Standard Library Type" to "static" in Xcode 4?如何在 Xcode 4 中将“C++ 标准库类型”设置为“静态”?
【发布时间】:2012-01-26 21:27:13
【问题描述】:

我有一个正确构建的 Xcode 3.2 项目(带有 icu 的 sqlite3),我正在尝试在 Xcode 4 中重新创建它。我收到链接错误:

Undefined symbols for architecture x86_64:
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for icu_48::SortKeyByteSinkin libicui18n.a(ucol.ao)
      ...
  "___gxx_personality_v0", referenced from:
      Dwarf Exception Unwind Info (__eh_frame) in libicui18n.a(uregex.ao)
      ...

我以前用 Xcode 3.2 有过这种情况。然后通过将构建设置Linking-> C++ Standard Library Type 更改为static(默认为dynamic)。如果我正确理解文档,实际标志是STANDARD_C_PLUS_PLUS_LIBRARY_TYPE

但我在 Xcode 4 中找不到该设置!

编辑

主模块 (sqlite3) 是 C,但 ICU 库是 C++,大概带有 C 声明。我可以自己构建sqlite3,但是当我需要在ICU库中链接时,麻烦就开始了。

【问题讨论】:

    标签: sqlite xcode4


    【解决方案1】:

    您的应用可能是 C,但看起来 libicui18n 包含 C++。

    如果您将main.m 重命名为main.mm,会发生什么情况?这应该会导致它与标准 C++ 库链接。

    【讨论】:

    • 我的错误(我更正了问题),但我不知道您对main.m 的意思是什么——这个项目中没有任何.m 文件,只有.c
    • 对不起。由于您使用的是 Xcode,因此假定为 Objective C。在这种情况下,将main.c 重命名为main.cc?你想强制 Xcode 使用g++/clang++ 来做链接,它似乎是基于main 的后缀触发的。如果你没有main.c,我认为 Xcode 中肯定有其他设置可以设置它,但我不确定它是什么。
    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2013-01-05
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    相关资源
    最近更新 更多