【问题标题】:Xcode: testing if framework is linked to projectXcode:测试框架是否链接到项目
【发布时间】:2016-04-26 08:53:51
【问题描述】:

我正在开发一个自然依赖于其他框架的框架。为了帮助我的用户进行集成,我添加了一个宏,如果某些框架未链接,我会警告他们:

#ifndef _SYSTEMCONFIGURATION_H
#warning "The SystemConfiguration framework not found in project or not included in precompiled header, please make sure that it does"
#endif

问题是,即使我将SystemConfiguration 链接到我的项目,我也会看到此警告。

我做错了什么?谢谢!

【问题讨论】:

    标签: ios objective-c xcode frameworks


    【解决方案1】:

    用户应该在他的应用程序中的某个地方#import <SystemConfiguration/SystemConfiguration.h>,然后再包含您的框架的标题。 _SYSTEMCONFIGURATION_H 只是一个预处理指令,在 SystemConfiguration.framework 内部声明,所以你需要包含它的头,仅仅链接二进制是不够的。

    【讨论】:

    • 谢谢,但它引发了另一个问题:如果我导入伞形标题并从我的测试应用程序中取消链接 SystemConfiguration,我不会收到任何错误。
    • @Yotam,您的框架是否依赖于 SystemConfiguration?那么你可以将它与 SystemConfiguration 链接起来,你就可以开始了。链接在编译之后进行,因此编译器不知道在完成工作后将链接哪些框架,因此无法在编译阶段检查它。还有一个选项可以在运行时检查它,如下所示:BOOL isFrameworkLoaded = (NSClassFromString(@"MyClassNameFromTheFramework") != nil);
    • @andery.s 如果可以的话,我希望 Xcode 能够引发链接时错误。我已经按照您对某些框架的建议使用了“NSClassFromString”,但是在诸如 SystemConfiguration 之类的框架中,即使在搜索了所有头文件之后,我也没有看到任何定义的类。它主要是 C 结构和变量。
    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2016-02-17
    • 2013-07-10
    相关资源
    最近更新 更多