搞了一天静态链接库,终于搞得明白了些,网上用xcode4制作静态链接库的资料大多比较粗糙,所以写篇文章把经验分享给大家。
静态链接库适用于:
1.你想将一部分以后都不会修改的代码打包,供其他项目使用
2.你想将一部分代码封装起来给别人用,又不愿别人看到你的实现方法
如何制作静态链接库(以下简称lib):
1。如果是新工程。创建工程的时候选Framework&Library -> cocoa touch static library,就直接创建了一个静态链接库工程,默认会有两个跟工程名相同的.h和.m,继续添加文件,m都会自动加入到Build Phases->Compile Source中,表示这些代码会被编译进lib中,你可以删掉你不希望被编译的。
2. 如果是项目工程,想抽取一个lib出来,就add target,也是选Framework&Library -> cocoa touch static library。在xcode navigator里会多一个文件夹,和你新创建的target同名。同样,你可以在Build Phases->Compile Source里,添加你希望加入到lib中的文件。
在编译之前,在target的scheme中选build configuration为release(debug貌似只能用于调试)。然后编译。
注意,你用device模式编译出的lib只能真机运行,模拟器模式编译出的lib只能用于模拟器调试。然后找到编译出lib,复制到需要它的工程里。
如果你希望一个lib既可以在模拟器上运行,又可以在真机上运行,那就各编译一次吧,把两个lib都找到,用命令把两个lib合并成一个,命令是:lipo -create sim.a dev.a -ouput lib.a 合并产生的lib.a就可以两用了。
把lib和新工程里需要引用的头文件都添加进新工程,这样就可以了。
可能遇到的问题:
1.找不到头文件。你没把要用的头文件从lib工程里复制到新工程
2.链接错误。检查编译lib时用得device模式还是模拟器模式,现在运行模式是否一致;你使用的类的m文件在lib工程里是否加入到Build Phases->Compile Source中
分享到:
相关推荐
有关动态连接库的静态连接与动态连接 有关MFC的 static library 与 share DLL 之间的区别
在C++中建立Win32 Static Library 静态链接库,建立了一个简单的名为hello的函数库(hello.lib), 然后在新建一个简单的he.exe程序, 通过包含函数库的头文件(hello.h)和库文件(hello.lib)来调用hello.lib库中的hello...
GLEXT is a Win32 DLL with header and linker library, designed using Microsoft Visual Studio 2012. It implements all publicly available OPENGL extensions as static functions, that can be directly ...
• 包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式: • 动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的...
vc6.0通过MFC APPWizard(DLL)静态链接库创建MEX程序
android NDK下使用第三方静态库例子。
1.project-> settings-> settings for 选 "win32 release " 右边microsoft foundation classes 选use mfc in a static library 这样你build出来的release版本exe就是使用静态库的,不需要vc运行库。
程序员应该有碰到如果使用iPP库,他的静态库链接一个新的库会大到108M,有许多之前用Intel JPEG Library 的程序员,如果自己产生Intel JPEG Library 新版静态库,也会发现大的让人不能接受,这个版本使用自动剔除...
一个功能强大的MFC界面处理扩展库:CJ60Lib 这是从网上搜集的一个扩展库,把它...添加下面代码到StdAfx.h 头文件,其将使库静态链接到应用程序: #define MFCXLIB_STATIC #define MFCX_PROJ #include <CJ60Lib.h>
此存储库中包含的Dockerfile使用Ubuntu 12.04基础映像来构建静态链接的FFmpeg二进制文件[ffmpeg和ffprobe]。 已使用FFmpeg 4.0 [当前稳定版本]进行了测试,但是一般过程可能会在将来的FFmpeg版本中使用。 请注意,...
为何DLL 先看看静态库与DLL的不同之处 可执行文件的生成(Link期):前者很慢(因为要将库中的所有符号定义Link到EXE文件中),而后者很快(因为后者被Link的引入库文件无符号...Windows API编程之动态链接库(DLL)
运行和静态链接Mono的斗争:一个指南存储库,用于使Mono可以为其他平台编译应用程序
建立并链接到静态库。 或仅将tictoc。[ch]复制到您的项目中。 在Linux上,您需要链接到librt。 使用 : 将源代码树解压缩(或使用git子模块)到项目中的子目录。 例如, modules/tictoc 。 add_subdirectory ...
IDAPythonScripts: 二进制漏洞静态分析检测脚本(IDA Pro) QQ交流群:813115551 加微信-进入交流群:wwy18795980897 准备 首先下载IDA Pro软件,版本 <= 6.8,7.0以上部分脚本不支持。 安装IDAPython插件。 IDA...
上面,我们得到了Osip的解析器开发库,下面再编译完整的Osip协议栈开发库,同样照上述方法,分别创建动态链接库工程和静态链接库工程,只是要拷的文件换成src下的osip目录下文件和include下的osip目录,...
StaticLibrary: 显示的编译成静态链接库,与上面的 Library 效果一样。 SharedLibrary: 在 POSIX 系统上编译动态链接库,在 Windows 平台上编译 DLL。 这个简单的 SConstruct 的配置文件从一个侧面说明了使用 ...
你可以直接从主目录进入任意小节,并循每页底部的链接向后浏览。 很多小节含有一页例题介绍该章节主要知识点的使用。建议在进入下一章学习之前最好先阅读这些例题,理解每行代码。 学习和练习一种编程语言的最好办法...
增加项目的静态链接库: Project→Settings→Link→Object/library Modules,在文本框的末尾添加”wpcap.lib packet.lib ws2_32.lib“。 增加预编译信息: Project→Settings→C/C++→Preprocessor definitions,...
读者此时可采用静态链接,具体操作为:VC中菜单Project->Setting->General->Microsoft Foundation Classes 选为“Use MFC in a Static Library”,重新编译工程即可。 3. 若按F5调试程序时,VC提示不能进行调试...
读者此时可采用静态链接,具体操作为:VC中菜单Project->Setting->General->Microsoft Foundation Classes 选为“Use MFC in a Static Library”,重新编译工程即可。 3. 若按F5调试程序时,VC提示不能进行调试...