与第三方SDK的Apple Mach-O链接器错误

时间:2014-06-02 15:01:02

标签: ios objective-c xcode linker mach-o

我已经浏览了stackoverflow中的所有Mach-O链接器错误条目,但无法解决问题。请参阅以下信息:

  1. 我在我的应用程序中使用第三方SDK框架。
  2. XCode 5.1,iOS7.1 SDK,iPad应用程序
  3. Mach-O链接器错误来自添加SDK。
  4. 我测试了两个不同的项目;
    1. SDK提供商的示例应用。 BULIDS精细和编译精细;搜索路径为空,SDK框架位于项目目录中,不创建位置独立可执行文件:是,Mach-O类型:可执行文件
  5. 从头开始创建一个不同的应用程序,THROWS MACH-O LINKER ERROR;搜索路径为空,SDK框架在项目目录中,不创建位置独立可执行文件:是,Mach-O类型:可执行文件。我在示例应用程序中添加了所有框架,还导入了我需要的所有类和头文件。
  6. 如果删除搜索路径,则无法发现SDK框架,因此我必须重新添加。

    Undefined symbols for architecture i386:
    "std::string::find_last_of(char const*, unsigned long) const", referenced from:
    talk_base::Pathname::SetPathname(std::string const&) in ACBClientSDK(pathutils.o)
    talk_base::Pathname::folder_name() const in ACBClientSDK(pathutils.o)
    talk_base::Pathname::parent_folder() const in ACBClientSDK(pathutils.o)
    "std::string::find_last_of(char, unsigned long) const", referenced from:
    buzz::SuggestPrefix(std::string const&) in ACBClientSDK(xmlnsstack.o)
    "std::string::find_first_of(char const*, unsigned long) const", referenced from:
    webrtc::DtmfSender::DoInsertDtmf() in ACBClientSDK(dtmfsender.o)
    talk_base::Pathname::SetBasename(std::string const&) in ACBClientSDK(pathutils.o)
    talk_base::Pathname::SetExtension(std::string const&) in ACBClientSDK(pathutils.o)
    buzz::XmlPrinterImpl::PrintQuotedValue(std::string const&) in   ACBClientSDK(xmlprinter.o)
    buzz::XmlPrinterImpl::PrintBodyText(std::string const&) in ACBClientSDK(xmlprinter.o)
    "std::string::find_first_of(char, unsigned long) const", referenced from:
    talk_base::Pathname::SetExtension(std::string const&) in ACBClientSDK(pathutils.o)
    "std::string::find_last_not_of(char const*, unsigned long) const", referenced from:
    talk_base::string_trim(std::string const&) in ACBClientSDK(stringutils.o)
    "std::string::find_first_not_of(char const*, unsigned long) const", referenced from:
    talk_base::string_trim(std::string const&) in ACBClientSDK(stringutils.o)
    
  7. 我该如何解决这个问题?期待您的回复!提前谢谢!

2 个答案:

答案 0 :(得分:5)

我在尝试设置新的CafeX项目时遇到了同样的问题。我完全按照文档进行操作,当我尝试构建时遇到了87个链接器错误。我通过添加libstdc ++来解决这个问题。我注意到的6.dylib是在那里的示例应用程序但在文档中没有提到。

答案 1 :(得分:0)

解决方案的可能性:

添加" -all_load"到你的其他链接器标志

检查导入.m而不是.h