2013-03-27 26 views
1

我们知道我们可以强制静态库在链接期间加载所有的目标文件。这是用于不同的目的,如包括目标c类别到静态库等强制一个静态库不要使用-ObjC的-all_load标志?

我的问题是,有可能迫使图书馆不加载所有的目标文件时,项目使用-ObjC或-all_load标志?

为了控制某些头文件的导入,我使用了一些铿锵的功能(尤其是__has_include指令),但是当使用-ObjC标志时,这个指令没有效果,所有的目标文件都被加载,所以我的库文件不能正常工作。

有什么办法解决或解决这个问题?

问候,

回答

2
Is there any way to solve or workaround this problem? 

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

它对每个需要加载的符号都有很强的参考,然后链接器将解析该符号并将其链接到最终的可执行文件中。

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

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

相关问题