当前位置:首页 » 编程软件 » 封装后如何编译

封装后如何编译

发布时间: 2025-05-27 13:42:21

A. iOS 打包framework(包含第三方framework或.a文件)

1.创建framework工程

2.将framework拖进工程中,工程分两部分,一个是原始文件(红色部分),一个是我需要进行封装的文件(蓝色部分):

3.将bitcode置为NO

4.1 选择工程->targe->build setting,在搜索框中搜索linking,进行如下设置
4.2 将Build Active Architecture Only 设为 NO

5.1 把要公开的头文件已到Public中去,在使用.framework时只能调用公开.h文件中的声明。
5.2 完成上述步骤之后,在HYSDK.h文件中,把所有需要暴露的.h文件都用#import < HYSDK/PublicHeader.h>引入,记住一定要将所有的需要暴露的.h文件都写在给定位置,不然编译后生成的.framework在引用的时候会有警告;

6.开始编译,选择Generic iOS Device 或者 真机 或 模拟器,编译一下,再选择模拟器环境编译一下

9.创建成功之后。新建工程。将新的framework再倒入进去。配置相关依赖库即可。如果报找不到第三方的库,则需要将第三方SDK.framework倒入进来即可。

B. 我想把C#里的几个控件封装成一个,以后可以自己用,都有哪几步啊。。

1.新建项-用户控件
2.把兆态需要的C#控件往用户控件上拖,并布局
3.编写用户控件后台代码(用于操作之前拖上去的C#控件)
4.编空颤译
5.此用斗猜败户控件之后就可以像C#控件一样,往你想用的地方拖了

C. 怎么用Keil将C程序封装成lib库

在团队工作中,经常会有模块维护和代码封装的问题。把需要封装的代码打成一个lib无疑是一种很好的方式。
1.创建lib
创建一个lib很容易,只需要创建一个target,然后把需要封装的代码全部加进来,然后再Options of Target中选择Create Library,然后编译,因为是lib所以不需要链接,编译过了,你的lib就创建了。当然了,为了别人可以轻松的使用,请提供头文件支持哦。
2.使用lib
使用lib就更容易了,把lib和头文件加入你的工程,直接调用就是了。lib库会和你工程中其它编译后的obj一起链接,形成最后的目标文件。
3.注意事项
首先,Startup和中断处理程序不要封入LIB,这些程序会在链接的时候产生问题。具体的原因么,有点复杂,应该是中断程序的link机制有所不同的关系吧。
其次,Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中,因为LIB51在链接的时候是按模块来链接的,一个模块就对应一个C文件,假如链接器因为要使用你一个函数fA而引入了A模块,那么A模块中的另外的函数也会被引入,而另外的函数你又没有使用的话,那么就会引发Keil经典的UNCALLED FUNC的warning。这个warning在Keil的文档中说的好清楚了,我粘过来吧:
It is common practice ring the development process to write but not call
additional functions. While the compiler permits this without error, the
Linker/Locator does not treat this code casually because of the support for data
overlaying, and emits a warning message.
Interrupt functions are never called, they are invoked by the hardware. An
uncalled routine is treated as a potential interrupt routine by the linker. This
means that the function is assigned non-overlayable data space for its local
variables. This quickly exhausts all available data memory (depending upon the
memory model used).
If you unexpectedly run out of memory, be sure to check for linker warnings
relating to uncalled or unused routines. You can use the linker’s IXREF
directive to include a cross reference list in the linker map (.M51) file.
大意就是说,Keil的内存应用模式是指定地址的,也就是要根据调用关系来决定哪块地址可以被复用。对于这种没人调用的函数,Keil会认为是中断处理程序,并不能决定调用关系,所以此类uncalled函数的空间不能和其他的程序共享,也就是说,这函数用多少RAM,你就少多少RAM。那uncall多了会怎么样?----废话,当然是内存溢出了。
所以,lib的功能可以做的大而全,但是里面的模块一定要分的要多细,有多细,只有这样,你才能像在windows上用CRT一样舒服的使用LIB。

个人总结
1. 生成lib 的工程可以没有main函数,可以只有一个.c文件,一个.c文件中可以只有一个函数
2. 需要在lib工程中建立一个.h文件, 必须用extern声明各全局变量和函数.

3. 调用lib文件的工程中必须包括lib中的.h文件, 也就是lib工程和调用工程都包含同一个.h文件(好像有点废话)
4.Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中. 没有调用关系的最好是一个函数单独放在一个.c文件中.这是为了避免在keil中应用程序调用lib库里出现告警. 因为LIB51在链接的时候是按模块来链接的,一个模块就对应一个C文件,假如链接器因为要使用你一个函数fA而引入了A模块,那么A模块中的另外的函数也会被引入,而另外的函数你又没有使用的话,那么就会引发Keil经典的UNCALLED FUNC的warning。
通常为每一个函数编一个.C文件,而整个lib用一个.h文件,这样就可以使只有被调用的函数参与连接
5.调用lib库时需要在工程中将.lib文件加进来. 在Group中右键,然后Add ,注意文件类型中选择*.lib.

热点内容
区块链电脑服务器 发布:2025-05-29 08:56:15 浏览:777
鬼泣5如何不开游戏降低配置 发布:2025-05-29 08:49:35 浏览:658
ps中图片压缩 发布:2025-05-29 08:34:06 浏览:108
两步编译动态链接库 发布:2025-05-29 08:33:26 浏览:509
linux配置本地账号ftp服务器 发布:2025-05-29 08:33:19 浏览:815
乐2清理缓存 发布:2025-05-29 08:32:32 浏览:414
我的世界服务器破坏方块怎么弄 发布:2025-05-29 08:14:52 浏览:925
如何打开加密excel文件 发布:2025-05-29 08:14:03 浏览:681
android重写快捷键 发布:2025-05-29 08:09:52 浏览:978
nas存储池磁盘区 发布:2025-05-29 08:06:51 浏览:736