TL; DR

如何使-ObjC链接器标志针对特定的静态库,而不是我链接的所有静态库,以避免未使用的目标文件与我的应用程序链接?

太长;读了

因此,您正在开发一个新的iOS应用程序,并添加您自己开发的“objcutil”静态库,其中包含各种有用的Objective-C类(未实现为类别),以执行过去有用的各种事情.到目前为止,这么好,并且只有实用程序库中引用的那些目标文件才与应用程序链接.

然后,您决定集成要使用-ObjC其他链接器标志的Google Maps SDK,并且实用程序库中的所有突然依赖都无法解析,因为您尚未将Xcode配置为链接到这些库.

好的,我可以很容易地解决缺少的依赖项,但是现在您有不需要的未使用的目标文件和库依赖项,并且您希望比这更整洁.

那么你如何避免OCD过载?

来自ld联机帮助页的一些参考:

-ObjC Loads all members of static archive libraries that define an Objective C class or a category. This option does not apply to dynamic
shared libraries.

> Xcode版本:5.1.1
> OSX版本:10.9.4

解决方法

好的,所以答案是使用-force_load而不是-ObjC,因为-force_load更集中.

因此,如果您按照说明将静态框架复制到应用程序项目目录中,那么WRT到Google Maps SDK,那么框架将位于项目根目录中,您可以从其他链接器标志中删除-ObjC并将其替换为

-force_load GoogleMaps.framework / Versions / Current / GoogleMaps:

没有什么需要改变.

对于其他库,您需要使用完整的静态库路径作为-force_load的参数.

ios – -ObjC标志能否有选择地应用于静态库?的更多相关文章

  1. ios – -ObjC标志能否有选择地应用于静态库?

    TL;DR如何使-ObjC链接器标志针对特定的静态库,而不是我链接的所有静态库,以避免未使用的目标文件与我的应用程序链接?

  2. ios – Xcode 7.1 PrototypeTools链接器错误(仅限模拟器)

    我正在尝试使用Xcode7.1在iOS模拟器中运行我的应用程序,但我收到链接器错误.这是错误:clang:错误:链接器命令失败,退出代码为1这似乎是一个新问题,因为我在升级到新的Xcode之前没有它.我在Google上搜索过,但是这个问题几乎没有相关主题.有趣的是,该应用程序在设备上运行良好.我已经尝试重置模拟器并再次清洁/建造,但两者都没有奏效.有没有其他人遇到过这个问题,你能提供什么建议吗?

  3. 通过cocoapods安装适用于iOS的Google Maps SDK会导致链接器错误

    我正在尝试使用cocoapods安装适用于iOS版本1.3.0的GoogleMapsSDK.实际上安装过程很成功,但是当我尝试使用框架时,app构建过程会返回链接器错误,例如:由于某种原因,链接器无法找到框架.我的cocoapods版本是0.20.1.XCode4.6.2.除了谷歌地图SDK,我的项目还有另外两个通过cocoapods添加的库.这是我的Podfile:提前致谢.解决方法您应该看到一个文件“Pods.xcconfig”,其中包含pod正在使用的框架.将应用程序的目标配置更改为基于CocoaP

  4. ios – 不同作用域中相同命名常量的链接器错误

    我有一个名为“ID_KEY”的常量,它在3个单独的.m文件的顶部声明,其中没有包含其他文件.声明如下:而其他两个类也是如此.但是我收到一个链接器错误抱怨同名的多个定义.我的问题是为什么链接器抱怨这个呢?

  5. ios – AudioKit 4.1 Mach-O链接器错误Swift 4

    我正在尝试使用AudioKit4.1来学习基础教程.我首先在项目中导入了AudioKit框架,如下图所示.导入AudioKit框架后,我在ViewController中添加了几行代码,如下所示:运行代码后,我得到59错误,如下图所示.你是如何解决的?解决方法从版本4.1开始,AudioKit现在作为静态框架提供.由于所有内部C代码,它取决于标准C库.这种依赖关系曾经由动态链接器自动解决,但不再是.使这些错误消失的最简单方法是在Xcode中的目标设置中添加-lstdc链接器标志.

  6. ios – apple mach-o链接器错误链接器命令失败,退出代码为1(使用-v查看调用)

    2我正在使用带有核心数据的ObjectiveC,我收到一个错误:AppleMach-O链接器错误,链接器命令失败,退出代码为1解决方法您需要打开详细说明.

  7. 开始使用 swift 的 c语言 库

    为了手头上的一个项目,我需要使用CommonCrypto库中的HMAC函数.虽然苹果在swift中已经提供了许多系统库,但是CommonCrypto不在其中.庆幸的是,要使用这个库并不怎么费事,只需要做一点额外的工作.开始访问库在使用库之前,我们需要通知Swift编译器.要完成这个过程,我们有两种方式.它们都能在示例工程中正常运行,但是你应该根据你代码的用途来选择具体的方式.好消息是,你随便使用那

  8. 使用swift定制Xcode项目的链接器

    我们使用LD和LdplUSPLUS用户设置调用自定义链接,除非有项目迅速文件,然后将原来的铛调用工作正常.有没有办法覆盖使用swift的项目的链接器?

  9. android – NDK 11链接器将警告视为错误

    我正在尝试用androidndk-11构建一个库,我收到一个链接器错误:arm-linux-androideabi/bin/ld:错误:将警告视为错误如果我使用ndk-r10e,我不会收到此错误.使用V=1运行ndk-build,我看到-Wl,–致命警告正被传递给链接器.我已经尝试将LOCAL_LDFLAGS:=–Wl,–无致命警告添加到我的Android.mk文件中,我可以在链接器输出中看到它实

  10. assembly – 64位Windows汇编程序

    我想编程64位Windows程序集.我看起来相当一个但在谷歌但似乎我找不到64位Windows编译器.有些网站提到了ml64,但好像它不再包含在VC中了.我试过32位汇编,但显然它只是在我的64位机器上崩溃了.是否可以在64位Windows机器上编写,编译和运行32位汇编应用程序?谢谢.Yasm(*)是一个现代的多平台NASM重写汇编程序,能够组装x86和AMD64/x86-64指令集.但是……

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部