【问题标题】:Crash when using lib file in proj在 proj 中使用 lib 文件时崩溃
【发布时间】:2014-04-01 05:59:36
【问题描述】:

我已经按照这个教程LINK

但是当我将 lib 及其 .h 添加到项目中时出现链接器错误。

我在google上搜索,发现应该在设置中添加-ObjC和-all_load我做了,但错误无法解决。错误如下:

ld:警告:忽略文件 /Users/techvedika/Desktop/RND/MathTest/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils.a,在文件 /Users/techvedika/Desktop/RND/MathTest/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils 中缺少所需的架构 i386 .a(3片) 架构 i386 的未定义符号: “_OBJC_CLASS_$_MathFunctions”,引用自: AppDelegate.o 中的 objc-class-ref ld:未找到体系结构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我该如何解决这个问题?

【问题讨论】:

    标签: ios iphone ios7


    【解决方案1】:

    请在终端上查看lipo -info libICodeMathUtils.a。如果它没有列出架构 i386,则意味着您的库不是为模拟器构建的。而且在模拟器上不行

    【讨论】:

    • fat 文件中的架构:/Users/techvedika/Desktop/iCodeBlogsMathLibrary/libICodeMathUtils.a 是:armv7 (cputype (12) cpusubtype (11)) (cputype (16777228) cpusubtype (0)) 什么我应该怎么做才能让它在模拟器中运行。
    • 你有那个库的来源吗?
    • 关注this创建静态库。您需要针对模拟器和设备构建库。并将两者结合起来创建一个通用库以在模拟器和设备上工作
    • 我已经尝试过教程,但我无法使用模拟器设置构建 lib 项目。另外,我找不到教程中提到的工具“LIPO”。你能帮我解决这个问题吗?
    • lipo 你可以从终端试试。 lipo -create <simulator_lib>.a <device_lib>.a -output lib.a
    【解决方案2】:

    显然,这不是崩溃,只是链接错误,你的项目缺少i386版本的libICodeMathUtils.a,所以你应该先将libICodeMathUtils.a添加到你的项目中。

    【讨论】:

    • 如何获取 i386 版本库有什么设置吗?
    • @user2798258,关注link,你可以获得一个包含设备和模拟器的通用库。
    【解决方案3】:

    缺少 MathFunctions 类。来自您的应用程序项目或您使用的 SimpleLibrary.a。确保它是构建的编译和链接步骤的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 2013-11-06
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多