Ios 库的Xcode框架包装器(公开库头)
我正在围绕一个静态库创建一个框架包装器。头文件(MyLibrary.h)需要可以从MyProject中的ViewController.m文件访问Ios 库的Xcode框架包装器(公开库头),ios,objective-c,xcode,static-libraries,Ios,Objective C,Xcode,Static Libraries,我正在围绕一个静态库创建一个框架包装器。头文件(MyLibrary.h)需要可以从MyProject中的ViewController.m文件访问 MyProject MyFramework MyLibrary.h libMyLibrary.a 我已将我的library.h设置为公共图书馆 MyFramework.h包含行#import “嵌入式二进制文件”设置为MyFramework 当我运行上面的代码时,我得到 架构x86_64的未定
MyProject
MyFramework
MyLibrary.h
libMyLibrary.a
我已将我的library.h设置为公共图书馆
MyFramework.h包含行#import
“嵌入式二进制文件”设置为MyFramework
当我运行上面的代码时,我得到
架构x86_64的未定义符号:
“_OBJC_CLASS_$_MyLibrary”,引用自:
ViewController.o中的objc类引用
ld:找不到架构x86_64的符号
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我发现解决这个问题的唯一方法是在MyFramework中创建一个私有类(称为TestClass)并分配MyLibrary。我假设这会强制我的库在运行时链接,并且可以从ViewController访问。
但这太难看了,我错过了什么
#import "ViewController.h"
@import MyFramework;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[[[MyLibrary alloc]init]test];
}
我通过将-ObjC添加到其他链接器标志来解决这个问题。我通过将-ObjC添加到其他链接器标志来解决这个问题。您需要添加
#导入“MyFramework.h”
,而不是在ViewController.m
类中添加@import
。谢谢,刚刚尝试过,我仍然收到相同的错误。您需要添加#导入“MyFramework.h”
而不是ViewController.m
类中的@import
。谢谢,刚刚尝试过,我仍然收到相同的错误。
#import "TestClass.h"
#import "MyLibrary.h"
@implementation TestClass
- (id)init {
if (self = [super init]) {
[MyLibrary alloc]; //solves the problem of MyLibrary being accessable from ViewController
}
return self;
}
@end