我正在使用一个名为NSObject类的静态库 '的ClientRequest'
我必须将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的'重复符号_API_BASE_ for i386架构'错误。 A和ClientRequest。
任何想法如何解决这个问题?类A,B和C使用ClientRequest的方法。
答案 0 :(得分:1)
如果没有其他信息,很难确定你正在做什么。但是,从给出的内容来看,您似乎在API_BASE
文件中定义ClientRequest.h
,以便在每个文件中包含一个新项目,并且最终会有多个项目。
如果您错误地定义了一个全局变量,可能会发生这种情况。
如果您在ClientRequest.h
中声明一个全局变量,比如说:
int API_BASE;
然后编译的每个文件(包括标题)将定义其自己的变量副本,并且您将获得重复的符号错误。正确的方法是将变量声明作为标题中的`extern:
extern int API_BASE;
并在ClientRequest.m
中定义一次:
int API_BASE;
extern
关键字表示您正在声明将在别处定义的变量的名称和类型。
所有函数/方法声明都是隐式外部的,但关键字是变量所必需的。
HTH