Tag: 静态库

在iOS项目中使用包时出错/如何创build正确的包?

我试图在iOS项目中包含一个静态库。 我导入了整个静态库项目,然后我把这个库链接到“目标依赖关系”和“链接二进制文件库”中,如下所示: http : //www.applausible.com/blog/?p=657 但是当testing应用程序时,我得到这个错误: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/alexis/Library/Application Support/iPhone Simulator/5.0/Applications/9811107D-0D7E-4178-ACCE-BF43E3043770/PlazappPartnerTest.app> (loaded)' with name 'LauncherView'' *** First throw call stack: (0x188a052 …… 我想它不能访问.xib文件,但因为它包含在我的库中,我不知道为什么。 如何使主项目“看”.xib文件? (如果这实际上是问题…) 编辑: 我试图做一个包含.xib文件的包,并将其包含到我的主项目中,但是我不能使用这个包。 我试过这个: NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"]; NSBundle *bundle = [NSBundle bundleWithPath:bundlePath]; NSError *error; […]

如何分发静态库?

我的问题是:哪一个是公开使用编译库的正确方法? 例如,OpenFeint发布一个静态的Fat库(和源代码)他们如何pipe理Release或Debug版本? 我想了解我的图书馆有多less版本,我确定用户可以自由select如何导入我的图书馆,我认为一个好的解决scheme可以编译和发布这些版本: 发布 – 设备 发布 – 模拟器 发布 – 脂肪(设备+模拟器) debugging – 设备 debugging – 模拟器 debugging – 脂肪(设备+模拟器) 你有什么想法? 你更喜欢与第三方库一起工作?

Xcode找不到我的静态库!

这里是链接器错误: i686-apple-darwin10-gcc-4.2.1:/Users/william/Documents/SettingsLibrary/build/Debug-iphonesimulator/libSettingsLibrary.a:没有这样的文件或目录命令/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/ bin / gcc-4.2失败,退出代码1 一些奇怪的事情,这可能是什么事情的线索: 1)在我的“库searchpath”中,我已经包含了图书馆项目的recursionpath: ../SettingsLibrary/** 但是,SettingsLibrary自身构build到SettingsLibrary / build / Debug / iphoneos / libSettingsLibrary.a 同时,根据错误消息,链接器似乎正在查找:SettingsLibrary / build / Debug-iphonesimulator / libSettingsLibrary.a 2)我在我的主要项目中包含了图书馆项目。 当我右键点击组和文件时,有一个选项可以将libSettingsLibrary.a文件包含在我的目标中。 在我看过的至less一个其他使用库的项目中,该checkbox不存在于.a文件中。

我怎样才能使它的私人成员或类的方法,以便它可以在静态库本身而不是在图书馆之外访问?

我想为objective-c中的下面的类准备小的静态库:A类,B类,C类。我想将这些类包含在静态库中。 现在A类可以访问B类或C类方法的公共成员 现在,当我在上面的库中集成其他项目时,我准备了只能访问A类和B类不是C类的D类。我该怎么做? 我的另一个疑问是假设NSString * isValid在B类中声明。 我希望上面的variables可以从A类和C类访问我的意思是库的包含文件可以访问上面的variables。 但是从外部库以上variables不能访问。 怎样才能让它在图书馆内部被访问,而不是在图书馆之外? 感谢帮助 !

CoreData:警告:无法为实体“Readings”加载名为“WEEReadings”的类。 找不到类,使用默认的NSManagedObject来代替

好的,现在是社区帮忙几个小时和几个小时的search。 我有一个静态库,使用这个真棒脚本,我生成我的静态框架,其中包括通用静态库,也创build一个包括ReadingsCoreDataModel.momd,其中包括ReadingsCoreDataModel.mom束。 所有好的,我提供这些到我的客户端iOS应用程序,所有构build正确,并启动应用程序扭曲到我的框架和使用捆绑,我有一个单独的WEEDataStore类在我的静态库使用另一个类名为工人,检查,NSManagedObjectModel无,看起来要正确加载,NSPersistentStoreCoordinator不是零,NSManagedObjectContext不是零。 在WEEDataStore中我有一个保存方法,我从我的静态库中的Worker类调用。 在我的ReadingsCoreDataModel.momd中,我创build了一个名称读取和类WEEReadings的实体。 我在Worker类中执行以下操作 WEEReadings* readingsEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Readings" inManagedObjectContext:[[WEEDataStore sharedInstance] managedContext]]; [readingsEntity appendWithReadingsModel:self.readingsModel]; [[WEEDataStore sharedInstance] save]; 结果是得到以下错误 CoreData: warning: Unable to load class named 'WEEReadings' for entity 'Readings'. Class not found, using default NSManagedObject instead. 2014-12-13 20:11:30.080 TestClient[6854:2487108] -[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0 2014-12-13 20:11:30.084 TestClient[6854:2487108] *** Terminating app […]

弱链接静态库通过-weak_library

题: 弱链接静态库(Obj-C)有可能吗? 短细节 我希望我的自定义静态框架( MyFramework.framework )弱链接我的其他自定义静态库( libMyLibrary.a )。 libMyLibrary.a背后的function是可选的,如果没有 libMyLibrary.a被任何使用MyFramework.framework的第三方应用程序链接,可以省略。 我正在使用-weak_library 。 我的testing应用程序抱怨静态连接器无法在MyFramework的ABCTracker.o符号中findMyLibrary的符号MyClass : Undefined symbols for architecture arm64: "_OBJC_CLASS_$_MyClass", referenced from: objc-class-ref in MyFramework(ABCTracker.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 如何正确设置弱链接? 全部细节 build立 Xcode项目构build一个静态的Mach-O二进制文件并将其捆绑到一个静态框架中。 结果是MyFramework.framework包。 其他项目生成一个静态Mach-O二进制文件,结果是一个静态lib文件libMyLibrary.a,带有一个头文件MyLib.h libMyLibrary.a从MyFramework.framework目标的“ 构build阶段” >“ […]

什么是正确的过程链接静态库有共同的静态库?

我正在使用一个名为Silicon的静态库,用于我的所有iOS应用程序。 因为我不想创build一个庞大的静态库,可能会变得很难维护,所以我创build了很多更小的静态库,作为子模块附加。 截至本文撰写之时,Silicon的依赖关系树如下: 硅 | | ==> FDKeychain | FDDataClient | | => FDRequestClient | | => FDFoundationKit | ==> FDSQLiteDatabase | | => FDFoundationKit 正如你所看到的,FDRequestClient和FDSQLiteDatabase都将FDFoundationKit作为一个通用的静态库。 看来发生的事情是,当一个使用Silicon的项目build成时,它将所有的Silicon的目标依赖关系build立到项目构build目录中。 FDDataClient和FDSQLiteDatabase发生同样的事情。 所以在某些时候,FDRequestClient的FDFoundationKit被构build并复制到构build目录以及来自FDSQLiteDatabase的FDFoundationKit。 无论哪一个最后修build的只是覆盖前一个。 仅仅靠运气FDFoundationKit并没有以任何严肃的方式改变,FDRequestClient和FDSQLiteDatabase不能总是使用相同的版本,但我不能保证它永远是这样的。 我想知道是否有一种方法可以指定FDFoundationKit使用哪个版本,所以它可以是Silicon的责任,以确保所使用的版本将适用于FDRequestClient,FDSQLiteDatabase和我将来添加的任何其他依赖项。 我知道CocoaPods试图解决这个问题,但我不想让别人设置所有这些只是为了让我的图书馆工作。 如果我能find硅定义哪个版本的FDFoundationKit使用一切将完美的工作。

如何从静态库中获取版本号?

我有一个连接到iOS应用程序的库的.a文件。 我如何知道库的版本号? 我不需要以编程方式做到这一点,我只需要手动一次。

防止在iOS上reflection(objc /运行时)

我正在处理敏感数据的静态库。 使用库的开发人员不能在库上使用reflection。 在Android上,我们通过开发带有service的aar文件来解决问题,并将service运行到单独的进程中(当服务运行到另一个进程中时,开发人员不能使用reflection),但是我想知道如果iOS中存在类似的东西? 我们可以执行一个静态库到一个单独的进程? 如果没有,我们如何避免反思我们的静态库? 例如: MyTestObject *obj = [[[myTestView alloc] init ]; //=========================================== Class clazz = [obj class]; u_int count; Ivar* ivars = class_copyIvarList(clazz, &count); NSMutableArray* ivarArray = [NSMutableArray arrayWithCapacity:count]; for (int i = 0; i < count ; i++) { const char* ivarName = ivar_getName(ivars[i]); [ivarArray addObject:[NSString stringWithCString:ivarName encoding:NSUTF8StringEncoding]]; } free(ivars); objc_property_t* properties […]

包含外部C库和Xcode

我有一个内置的C静态库(Antlr 3 C库)。 它被正确安装和工作(即,我可以运行gcc -o parser lexer.c parser.c -lantlr3c就好)。 在Xcode中,但是,我得到一个错误。 我在“其他链接器标记”构build设置中添加了-lantlr3c 。 ld: library not found for -lantlr3c Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1 我在这里find的其他一些问题( 1,2,3,4 )通常有针对Xcode 3的答案。我在iOS静态库项目中使用Xcode 4.1。 我目前正在build立unit testing的东西。 编辑:按照@LaceySnr的要求,输出从详细的海湾合作委员会和Xcode的错误。 gcc的输出: $ gcc -v -o parser.o BFMathParser.c BFMathLexer.c -lantlr3c -arch i386 Using built-in specs. Target: i686-apple-darwin11 Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2335.15~25/src/configure –disable-checking –enable-werror –prefix=/Developer/usr/llvm-gcc-4.2 […]