Tag: 静态库

IOS静态库产品始终是红色的

现在我已经挣扎了好几天了。 当我在XCode 4的IOS下创build一个新的静态库项目时,我遇到了一个问题。 无论是否添加文件作为标题或编译我能够成功地构build但.a文件始终是红色的。 在debugging和发布中都会发生这种情况。 我读过类似的问题,但没有find解决问题的人。 任何帮助,将不胜感激。 谢谢

Xcode多个静态库和重复的符号

我正在开发一个依赖两个静态实用程序库(libBFSDK&libBetfair-Platform)的iPad应用程序。 这两个静态库都包含AFNetworking。 当我尝试在我的iPad应用程序中包含这两个静态库时,出现如下链接错误: duplicate symbol _OBJC_METACLASS_$_AFImageCache in: /Users/osheas/Library/Developer/Xcode/DerivedData/Betfair-gnnjnwtovdmtoxakuxbjyvetciyy/Build/Products/Debug-iphonesimulator/libBFSDK.a(UIImageView+AFNetworking.o) /Users/osheas/Library/Developer/Xcode/DerivedData/Betfair-gnnjnwtovdmtoxakuxbjyvetciyy/Build/Products/Debug-iphonesimulator/libBetfair-Platform.a(UIImageView+AFNetworking.o) ld: 86 duplicate symbols for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) UIImageView + AFNetworking是AFNetworking的一部分。 这两个静态库都包含AFNetworking。 因此,我得到了UIImageView + AFNetworking的重复符号。 任何人有一个解决这个问题的想法? 我有权访问两个静态库的源代码,但我仍然不知道如何解决这个问题。 谢谢,请让我知道如果你需要任何其他细节, 肖恩 PS – FWIW我正在运行Xcode 4.5,我需要能够部署到iOS 4.x设备。

什么是减lessobjective-c中静态库大小的最佳实践?

在构buildObjective-C静态库时,我注意到.a文件(来自模拟器和iPhone的胖文件)非常大。 特别是原来的5.7MB。 我发现这个职位,并设置我的Generate Debug Symbols设置Generate Debug Symbols为否,减less库大小为1.7MB。 这是一个很大的改进,但还有什么可以做的吗? 单独的实现和头文件占用大约100kb。

如何在没有公开所有符号的情况下为iOS创build静态库

这个问题之前已经被问过了,但是深入挖掘各种开发工具的文档,看起来这是可能的,只是不明显。 动机:制作一个供其他iOS开发人员使用的静态库。 库中的一些符号会导致出现问题,所以我希望使它们成为内部符号。 使用dynamic库这很容易,只需使用-exported_symbols_list libtool ( ld )参数,并列出你想要公开的参数。 libtool文档不会允许静态库的这个参数。 库有几个使用相互代码的ObjectiveC .m文件。 只有组中的一个类需要向最终的.a静态库文件的用户公开。 试过libtool -exported_symbols_list publicsymbols.exp但libtool参数不支持静态库的静态。 不能使这些符号具有私有属性(如果甚至可以),因为组中的其他.m文件需要它们。 看起来像ld可以采取几个.o文件,并将它们链接到一个新的.o文件(通过-r参数),它没有“dynamic唯一”的免责声明-exported_symbols_list参数(这可能只是不清楚的文档…)。 就像testing我用Xcode构build项目一样,我将所有的.o文件制作完成,然后尝试在命令行上调用ld ,如下所示: ld -r -x -all_load -static -arch armv6 -syslibroot {path} -filelist /Users/Dad/ABCsdk/iphone-ABClib/build/ABCLib.build/Distribution-iphoneos/ABCLib-device.build/Objects-normal/armv6/ABCsdk.LinkFileList -exported_symbols_list {exp file path} -o outputfile.o {path}types的东西有很长的path,在那里适当的地方。 但我得到如下错误: / usr / bin / ld_classic:/Users/Dad/ABCsdk/iphone-ABClib/build/ABCLib.build/Distribution-iphoneos/ABCLib-device.build/Objects-normal/armv6/ABCmain.o不兼容,文件包含不受支持的types加载命令0中的第3节(_ TEXT, _picsymbolstub4)(必须指定“-dynamic”来使用) 所以有些东西似乎错了 任何人都知道一个聪明的方法来做这个工作? 谢谢。

将静态库添加到podspec

我的podspec需要一个静态库(OpenSSL)。 为了方便起见,我正在运送带有吊舱的图书馆。 静态库包含: 二进制文件: MyPod/openssl/bin/libcrypto.a和MyPod/openssl/bin/libsll.a 标题: MyPod/openssl/include/openssl/*.h 它自己的许可证(除了我的项目许可证): MyPod/openssl/include/LICENSE 在我的podspec中expression这个的正确方法是什么? 我见过使用以下属性组合的各种示例,我正在尝试不同的组合: source_files public_header_files private_header_files preserve_paths libraries xcconfig vendored_libraries 或者甚至更好,我可以在subspec中定义这个静态库吗?

用cocoapodsbuild立一个静态库

我正在尝试构build一个静态库,它具有在一个Podfile中指定的不同的依赖关系(例如AFNetworking)。 我不希望依赖包括在最终的静态库(调用libMyProject.a),我只是想链接它们,然后创build一个MyProject.Podspec文件,我可以把相同的依赖关系。 问题是,当我build立libMyProject.a libPods.a链接和包括,所以,如果我分发libMyProject.a和其他人集成在一个项目,使用一些相同的依赖关系,它将有重复的符号问题。 我如何链接到libPods.a库,但不包括它在libMyProject.a? 它应该像连接其他现有的框架一样工作。 谢谢!

在iOS的静态库中embedded开源代码的稳定方法?

我正在为其他开发者分发一个静态库。 换句话说,就是一种API。 而且我必须使用一堆开放源代码库,如SBJSON , ASIHTTPRequest 。 我认为如果我将这些类embedded到源代码级的库中,会引起名称冲突问题。 据我所知,Objective-C运行时不支持私有类。 那么有没有一种方法可以将这些类包含到我的库中而不会发生名称冲突?

混淆可重用的iOS包的Objective-C代码

可能重复: Objective-C代码混淆 我正在尝试将可以在多个应用程序中重复使用的iOS程序包放在一起。 我希望能够将其捆绑起来以便其他人轻松插入和使用,并且我想混淆代码,以便没有人能够读取它。 在build立框架,静态库或其他解决scheme来完成这个任务之前,你会推荐什么?为什么?

iPhone SDK链接错误与静态库

我已经构build了自己的静态库,其中有一些组件可以在我的项目中重用,最近还需要更新一些类。 具体来说,由于某些类改名,某些方法的签名被改变了。 现在发生的事情是,图书馆自己编译好了,但是,当添加到应用程序项目时,项目无法链接: Ld build/Sucursales.build/Debug-iphoneos/Sucursales.build/Objects-normal/armv6/Sucursales normal armv6 cd /Users/nameghino/src/Sucursales setenv IPHONEOS_DEPLOYMENT_TARGET 3.1 setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk -L/Users/nameghino/src/Sucursales/build/Debug-iphoneos -L/Users/nameghino/src/Sucursales/../../Library/MyLibraries/MSSharedLibrary-1.0.0 -F/Users/nameghino/src/Sucursales/build/Debug-iphoneos -filelist /Users/nameghino/src/Sucursales/build/Sucursales.build/Debug-iphoneos/Sucursales.build/Objects-normal/armv6/Sucursales.LinkFileList -dead_strip -lxml2 -ObjC -all_load -miphoneos-version-min=3.1 -framework Foundation -framework UIKit -framework CoreGraphics -lsqlite3.0 -framework CoreLocation -framework MapKit -lxml2 /Users/nameghino/src/MSSharedComponents/Frameworks/MSSharedLibrary/build/Debug-iphoneos/libMSSharedLibrary.a -o /Users/nameghino/src/Sucursales/build/Sucursales.build/Debug-iphoneos/Sucursales.build/Objects-normal/armv6/Sucursales Undefined symbols: "_OBJC_CLASS_$_DataCatalogService_GetSingleRow", referenced from: objc-class-ref-to-DataCatalogService_GetSingleRow in libMSSharedLibrary.a(MSDataCatalogSpecification.o) **"_OBJC_CLASS_$_DataCatalogService_ArrayOfString", referenced […]

复制符号:在静态库B中包含静态库A,在XCode项目中也包含库A和B.

我一直在尝试为应用程序开发构build一组可重用的库,但是我开始遇到一个问题。 我的一个静态库是一套通用的方法(Objective-C基础类的类别,以提高其可用性),我倾向于在每个项目中使用它们。 (我们将其称为Lib A …即XCode项目A产生libProjectA.a) 然后,我有其他的静态库,包含专门的math代码等等(我们称之为库B)。库B链接到库A,因为它需要使用一些通用function。 (即XCode项目B与libProjectA.a链接并生成libProjectB.a) 在我的XCode项目中,我想包含并依赖于Lib A,因为它具有我一直使用的一般用途。 我也想包括和依赖于Lib B,因为我需要这个专门的mathfunction。 (即我的应用程序项目希望链接libProjectA.a和libProjectB.a) 但是,当我尝试构build我的XCode项目时,出现重复符号的错误,因为Lib A中定义的符号也在Lib B中定义。 ld: duplicate symbol _OBJC_METACLASS_$_Foo in /Users/kenny/xcode_build/Release-iphonesimulator/lib_ApplicationCore.a(Foo.o) and /Users/kenny/xcode_build/Release-iphonesimulator/lib_SpecializedMath.a(Foo.o) 我怎样才能解决这个问题? 我想开发可重用的库来加速我的应用程序开发,并通过testing/改进的代码来提高稳定性。 我从错误的angular度来看待这个问题吗? 我正在开发的iOS,所以我不能使用dylibs,他们必须是静态的。 如何将这些库包含在我的项目中,以避免重复的符号?