我的iOS项目使用dlsym
动态指向可选的C库。项目中的可选项可以在没有它的情况下运行,只需添加功能。
有关背景信息:Detect and use optional external C library at runtime in Objective-C
问题是,XCode清理了未使用的库#34;使用dlsym
表示没有对我的第三方库的直接引用,XCode将其删除。
我以为我找到了一个解决方案,在"其他Linker Flags"我补充道
-force_load "$(SRCROOT)/my_external.a"
在模拟器中运行良好。 (-all_load
也可以正常工作,但对我来说似乎有点过分了。)
问题是当我转移到真实设备时,此解决方法失败并且未加载库(与-all_load
相同)。
唯一有效的方法是在XCode中禁用名为Dead Code Stripping
的功能。
问题是:禁用或推荐我的客户禁用此功能是否真的很糟糕?如果是的话,还有更好的选择吗?