我有一个旧的.a
库,其名称为BULib
,库目标的GCC_PREPROCESSOR_DEFINITIONS
中定义了一个宏NEW_API
。这个宏在lib中用来公开头中的一些方法,或者不用条件编译。例如:在消费者项目中找不到库预处理器宏
#ifdef NEW_API
+ (nullable NSString *)user;
#endif
在项目中使用此库时出现此问题。当我想用
[BULib user];
我得到一个编译时错误选择
没有已知的类方法“的getUser”
,如果我在GCC_PREPROCESSOR_DEFINITIONS
添加NEW_API
的问题就解决了的项目,然后我可以使用该符号,并按预期工作。
也许我误解了库和消费者项目之间的宏的使用,但我不希望这种行为。
为什么我必须在消费者项目中设置宏如果lib已经用宏集正确编译?如果这不是实现这一目标的方式,那它是什么?
非常感谢。
你能说出哪些引用的代码部分出现在哪个文件?我怀疑你的lib的API头包含它们或其中的一部分。如果lib定义了某些功能,但是头部只为它们提供声明,以防交换机被定义....那么你需要交换机。我知道一个[mcve]对于lib来说并不容易,但是试着给出更多的信息来“请”你的代码引用,“** M **几乎** C ** notreally ** VE **”。 – Yunnosch