0

我正在研究一个带有名为“ClientRequest”的 NSObject 类的静态库

我必须将 ClientRequest 类型的 NSObject 导入我的其他类:A、B 和 C。

所以上面提到的所有类都实现如下

#import "ClientRequest.h"

@interface A : ClientRequest

#import "ClientRequest.h"

@interface B : ClientRequest

#import "ClientRequest.h"

@interface C : ClientRequest    

静态库项目(.xcodeproj)已添加到我自己的项目中,并且目标包含在静态库中。当我运行自己的项目时,我遇到了 A 和 B、A 和 C & A 以及 ClientRequest 的“i386 架构的重复符号 _API_BASE_”错误。

任何想法如何解决这个问题?A、B 和 C 类使用 ClientRequest 的方法。

4

1 回答 1

1

如果没有额外的信息,很难确定你在做什么。但是,从给出的内容看来,您正在文件中进行定义API_BASEClientRequest.h以便在每个文件中定义一个新项目,并最终得到多个项目。

发生这种情况的一种方法是,如果您错误地定义了一个全局变量。

如果您在ClientRequest.has 中声明一个全局变量,请说:

int API_BASE;

那么每个包含头文件的编译文件都将定义它自己的该变量的副本,您将得到重复的符号错误。正确的做法是在头文件中将变量声明为`extern:

extern int API_BASE;

并在其中定义一次ClientRequest.m

int API_BASE;

extern关键字表示您正在声明将在别处定义的变量的名称和类型。

所有函数/方法声明都是隐式外部的,但变量需要关键字。

高温高压

于 2013-10-20T07:02:16.010 回答