gpt4 book ai didi

ios - 强制静态库不使用 -ObjC of -all_load 标志?

转载 作者:行者123 更新时间:2023-11-29 11:01:37 24 4
gpt4 key购买 nike

我们知道我们可以强制静态库在链接期间加载所有目标文件。这用于不同的目的,例如将 objective-c 类别包含到静态库中等。

我的问题是,当项目使用 -ObjC 或 -all_load 标志时,是否可以强制库不加载所有目标文件?

我正在使用一些 clang 功能(特别是 __has_include 指令)来控制某些 header 的导入,但是当使用 -Objcflags时,该指令无效,所有目标文件都已加载,所以我的库没有正常工作。

有什么方法可以解决或解决这个问题吗?

问候,

最佳答案

Is there any way to solve or workaround this problem?

是的,但它是一个脆弱且容易出错的点,可能不值得。重构代码以不需要静态库 {y,ies} 的部分链接可能会更容易。

如果您对需要加载的每个符号都有硬引用,则链接器将解析该符号并将其链接到最终的可执行文件中。

但是,由于这根本不是受支持或推荐的模式,因此可能无法直接引用代码中的某些符号。同样,似乎没有代表整个类别的符号。您可能必须单独引用类别中包含的所有方法。

查看nm命令行工具; nm -m library 将转储库中包含的所有符号信息。

关于ios - 强制静态库不使用 -ObjC of -all_load 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com