开发过程中,免不了要用到一些第三方或者是别人写好的一些Demo,这时就经常会用到别人写的一些静态库(.a文件)和n多个头文件(.h文件),这些文件不是简单地把它们拉到自己的工程里面就行的,还要设置一些路径. 在使用别人写的东西的时候,经常会出现各种各样变态的问题,这时最忌就是心浮气躁,一定要静下心来,慢慢解决.一般要经过以下步骤: 1.保证你已经把别人写的文件全部拉到你的工程里了.因为别人的工程运行都没问题,那你把别人写的东西拿来用也是能用的,只是可能没有把别人的文件全部(或者是你要用的那些)拉…
关于 xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 看这里 http://www.cnblogs.com/cocoajin/p/3917709.html 之前提到了两种方式: 一种是修改xcode编译选项:一种是在打包时去掉一方: 今天有第三种方式: 直接使用ar命令在其中一个包中删除指定的重复编译的.o文件: 如下场景演示 静态库libTaobao.a 里面编译有CEO.m 文件并且有 ceo方法 静态库libBaidu.a 里编译有CEO.…
来源:http://blog.csdn.net/zsomsom/article/details/9163635 Library介绍 基本知识 在实际的编程过程中,通常会把一些公用函数制成函数库,供其它程序使用,一则提搞了代码的复用:二则提搞了核心技术的保密程度. Library使用的两种方式:封装lib.a和直接引用lib工程. 一.封装.a文件 直接封装lib.a,向使用者提供头文件列表.使用者引用头文件并且使用其中方法,但是看不到实现文件的内容.这种方式每当静态库函数需要修改时就必须重新生成…
iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Static Library工程. 2.Xcode的参数设置 "Build Active Architecture Only" 设置为"NO" "IOS Deployment Target" 设置为 "IOS 7.0" ,表示支持IOS7…
判断IOS静态库(.a文件)是否支持模拟器和真机运行 在mac终端下,进入到.a文件目录下,然后输入: lipo -info libMyAlertView.a Architectures in the fat file: libMyAlertView.a are: i386 armv7 x86_64 arm64 说明libMyAlertView.a 支持 armv7 i386 x86_64 arm64  这些,所以可以放心使用到项目中.--------------------- 模拟器的架构是…
本文转自cocoachina,尊重作者的汗水. 讲述的非常透彻,有需要的朋友可以阅读实践.转载请注明出处 //=================以下留着备份==================// 在上一篇教程(中译版)中,你学到了怎么样创建一个可复用的圆形旋钮控件.然而你可能不清楚怎样让其他开发者更方便地去复用它. 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的…
准备知识: 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImage.AFNetworking b.闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现.主要分为:静态库.动态库 3.静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 4.静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可…
参考网址:http://www.jianshu.com/p/b754709135fb http://www.jianshu.com/p/443a5b8f3894   注意:封装静态库时要注意的地方: 1.如果要封装的文件中有派生类,比如NSString+helper这样的写法,那就需要把TARGETS->Build Settings->Linking->Other Linker Flags的属性设置为-ObjC或者-all_load(注意是在打包SDK的项目中添加),否则它会一直奔溃,并…
修改于:2017.1.24 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImage.AFNetworking b.闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现.主要分为:静态库.动态库 3.静态库和动态库的存在形式 静态库:以.a 和 .framework为文件后缀名.动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名. .a是纯…
iOS静态库 ---iOS-Apple苹果官方文档翻译 •什么是库? 库是共享程序代码的方式,一般分为静态库和动态库.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使⽤用就为什么要使用静态库?• 方便共享代码,便于合理使用.注意理解:无论是.a静态库还.framework静态库,我们需要 的都是二进制文件+.h+其它资源文件的形式,不同的是,.a本 身就是二进制文件,需要我们自己配上.h和其它文件才能使用, 而.framework本身已经包含了.h和其它文件,可以直接使用…
一.静态库简介 1. 什么是库? 库 就是程序代码的集合, 是共享程序代码的一种方式 2. 库的分类? 开源库 公开源代码, 能看到具体实现 例如MJExtension, MJRefresh, AFNetworking... 闭源库 不公开源代码, 是经过编译后的二进制文件, 看不到具体实现 主要分为: 静态库 和 动态库 3. 静态库的存在形式? .a .framework 4. 动态库的存在形式? .dylib .framework 5. 静态库和动态库的区别? 静态库在链接时, 会被完整的…
静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到库在使用的时候需要 Link,Link 的方式有两种,静态和动态,…
参考链接 步骤:适配所有的模拟器和真机 ——生成.a文件 <1>建一个静态库工程 <2>生成.a文件(注意添加类.h和.m文件) 同理:接入任意款真机,同上述操作,生成真机的.a文件: <4>合并模拟器和真机.a文件,并生成新的.a文件——此处把模拟器和真机的.a文件剪切到了桌面上,也可以不用放到桌面上! //找到生成的真机和模拟器的.a文件 //用命令行合并成新的.a文件:lipo -create name1.a所在路径 name2.a所在路径 -output new…
[iOS静态库的制作与引用] 1.Configuring Exported Headers To configure which headers are exported to clients, select your library project to open the project editor, select the library target to open the target editor, and select the build phases tab. If your li…
iOS 静态库,动态库与 Framework     静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到库在使用的时…
1. 静态库和动态库 1.1 静态库(.lib) 函数和数据被编译进一个二进制文件(通常扩展名为.LIB).在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件).当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库. 1.2 动态库(.lib文件和.dll文件) 在使用动态库的时候,往往提供两个文件:一个引入库(.lib)文件(也称“导入库文件”)和一个DLL(.dll)文件.虽然引入库…
在日常项目开发中,不论是为了两个公司项目上的业务交流还是为了减少项目的编译时间,有的时候我们会把项目中的私密内容打包成静态库,或者是把项目中变动较少一部分打包成静态库以便提高编译效率,那么下面我们就来学习一下"iOS-静态库的创建与使用": (一)iOS静态库.动态库与Framework静态库与动态库的区别: (1)什么是库? 库(Library)直白一点说就是一段编译好的二进制代码,加上头文件就可以供别人使用;(例如: iOS中Objective-C编译下的.h和.m文件,打包静态库…
这两个东西都是编译好的二进制文件.就是用法不同而已.为什么要分为动态和静态两种库呢?先看下图:…
如何在Xcode中创建C++静态库 http://jingyan.baidu.com/article/03b2f78c111fca5ea237ae26.html iOS 如何创建和使用静态库 http://blog.ibireme.com/2013/09/18/create-ios-static-framework/ iOS开发--创建你自己的Framework http://www.cocoachina.com/ios/20150127/11022.html https://www.raywe…
问题描述 一般项目中,可以使用宏定义来判断模拟器还是真机,这无疑是有效的. #if TARGET_IPHONE_SIMULATOR #define SIMULATOR 1 #elif TARGET_OS_IPHONE #define SIMULATOR 0 #endif 但是宏是预编译时发生作用的,那么在静态库中是否还能够使用宏定义来区分模拟器与真机? 分析思路 宏定义确实是预编译时发生作用的,但是静态库编译出来的.a文件通常是分为模拟器与真机两个的,及时通过lipo合并为fat.a文件,实际运…
这几天的工作挖了不少的坑.遇到了各种千奇百怪的错误,如今好好总结一下. 新建一个project,然后新建HelloCPP.h,HelloCPP.cpp文件.HelloCPP.h文件内容例如以下: #ifndef __CPPWrong__HelloCPP__ #define __CPPWrong__HelloCPP__ //#include <stdio.h> namespace hello { }; #endif /* defined(__CPPWrong__HelloCPP__) 就一个空的…
参考文章: iOS静态库(.a 和framework)  XCode6制作动态及静态Framework  说说iOS中静态库的开发  dyld: Library not loaded: @rpath/MySDK.framework/MySDK 错误解决 XCode6添加自定义framework运行真机出现dyld: Library not loaded的解决方法…
gcc demo.c -o demo  -I/tools/libevent/include -L/tools/libevent/lib -levent -I:头文件目录 -L:静态库目录 -l:静态库名字 如果想简单点,就在/etc/profile添加 29 C_INCLUDE_PATH=/tools/libevent/include:$C_INCLUDE_PATH 30 export C_INCLUDE_PATH 31 32 LIBRARY_PATH=/tools/libevent/lib:$…
整理自 MinGW中的头文件路径   C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明. C++头文件目录%MINGW_PATH%/lib/gcc/mingw32/4.4.0/include/c++下有头文件,里面有std::string类的声明. //家目录 MINGW_PATH=D:/MinGW //C头文件目录 C_INCLUDE_PATH=%MINGW_PATH%/include;%MINGW_PATH%/lib/gcc/mingw32/3…
gcc指定头文件路径及动态链接库路径   本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题.另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题.本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍.一.#include <>与#include “” #include <>直接到系统指定的某些目录中去找某些头文件.#include “”先到源文件所在文件夹去找,然后再到系统指定的某些目录中去找某些头文件. 二.gcc指定头…
如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631=============================================================================== 在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-l”来指定目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法.看下文的红色部分. 有大…
在Keil和IAR的工程中,为了使文件结构清晰,通常会设置很多的子文件夹,然后将头文件和源文件放在不同的子文件夹中,这样就需要手动添加这些头文件夹的路径.当工程结构非常复杂时,文件夹的数量就非常多,特别是从别人那里拷贝过来的工程目录,添加头文件路径就变得非常的繁琐.所以我们需要一个自动化的方法.该方法会搜索工程目录的文件夹和子文件夹,将其中包含了.h文件的路径找出来,并转换成keil和IAR要求的格式.这个难不倒程序员,只是简单的文件查找,再用点正则就行,QT也好,python也好都很容易实现.…
当使用CodeWarrior 10时,默认使用大名鼎鼎的GCC编译器. 我们在构建工程的时候,往往按模块分类文件夹,那么就存在需要包含头文件路径的问题.那么如何加入头文件的路径呢?见下文. 1.打开工程属性,选择C/C++General的Path and Symble,再选择GUN C.点击右边的 Add. 2.点击Variables 选择ProjDirPath,在设置相应的文件路径,见下图. 3.点击确认.完成设置了.…
    最近在项目实践中,需要统一对工程头文件进行重构,具体要求是,将之前 #include "../../abc/def.h" 类似的头文件引用路径 替换为#include "def.h" 之类的.由于工程文件很多,如果全部手动来一个一个的替换,显然是不现实的,这就需要利用正则表达式来批量替换头文件路径. 任务背景         针对项目中 多种多样的头文件包含路径 ,有 ./abc.h ,有 .\abc.h,有 ..\abc.h,有..\..\abc.h之类的…
linux 头文件路径 /usr/include…