Ios 在使用者项目中找不到库预处理器宏

Ios 在使用者项目中找不到库预处理器宏,ios,objective-c,macros,c-preprocessor,Ios,Objective C,Macros,C Preprocessor,我有一个旧的。一个名为BULib的库,在库目标的GCC\u预处理器定义中定义了一个宏NEW\u API。此宏用于在库中公开头中的某些方法,或不公开条件编译中的某些方法。例如: #ifdef NEW_API + (nullable NSString *)user; #endif 在项目中使用此库时会出现问题。当我想使用 [BULib user]; 我得到一个编译时错误 选择器“getUser”没有已知的类方法 如果我在项目的GCC\u预处理器\u定义中添加NEW\u API,那么问题就解决了,

我有一个旧的
。一个名为
BULib
库,在库目标的
GCC\u预处理器定义中定义了一个宏
NEW\u API
。此宏用于在库中公开头中的某些方法,或不公开条件编译中的某些方法。例如:

#ifdef NEW_API
+ (nullable NSString *)user;
#endif
在项目中使用此库时会出现问题。当我想使用

[BULib user];
我得到一个编译时错误

选择器“getUser”没有已知的类方法

如果我在项目的
GCC\u预处理器\u定义
中添加
NEW\u API
,那么问题就解决了,然后我就可以使用符号了,它可以按预期工作

也许我误解了宏在库和消费者项目之间的使用,但我不希望出现这种行为

如果库已使用宏集正确编译,为什么必须在使用者项目中设置宏?如果这不是实现这一目标的方法,那是什么


非常感谢。

有几种可能的解决方案:

  • GCC\u预处理器定义中添加
    NEW\u API
  • 删除
    #ifdef NEW_API
    #end
  • 在导入libs头之前,请使用
    #定义新的_API
  • 添加
    +(可为空的NSString*)用户
    BULib
    类别中缺少的其他方法
  • 就我个人而言,我更喜欢第三种选择。 它将是这样的:

    #define NEW_API
    #import <bulib.h>
    
    #定义新的API
    #进口
    
    对不起,您能再解释一下选项3吗?非常感谢。您能否说明引用的代码部分出现在哪个文件中?我怀疑您的lib的API头包含它们或其中的一部分。如果lib定义了某些函数,但标头仅在定义了开关的情况下为它们提供声明。。。。那你需要开关。我知道使用lib很不容易,但请尝试“围绕”您的代码引用提供更多信息,类似于“MalmostCnotreallyVE”。