2017-06-15 17:03:43 Kevin_love_Chrissy 阅读数 408
  • 编译实战视频教程

    本课程讲授一个真实编译器、链接器的完整开发过程。编写编译器用到的知识之广是编写一般程序所无法比拟的,将综合运用编译原理,数据结构与算法,Intel x86汇编语言、机器语言,目标文件格式,可执行文件格式等知识内容。

    37772 人正在学习 去看看 王博俊


在运行应用时候,我们可能会加入一些打印信息来帮助我们跟踪应用的运行信息,代码如下

#ifdef DEBUG

#define NSLog(format, ...) do {                                                                          \

fprintf(stderr, "<%s : %d> %s\n",                                           \

[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],  \

__LINE__, __func__);                                                        \

(NSLog)((format), ##__VA_ARGS__);                                           \

fprintf(stderr, "-------\n");                                               \

} while (0)

#else

#define NSLog(...)

#endif


 

正常使用都正常,但是就是不能在.mm 文件里引用,不然nsobjcruntime.h就会报错,坑了我好久才找到问题所在,因为宏定义的NSLog名字和系统的一样,在.mm里引用的话,就会报错,同时会导致nsobjcruntime.h也报错。

具体原因不清楚,如果有知道原因的,麻烦指教一下。


****解决办法****

①     把宏定义里的NSLog改成其它名字就编译通过了。

②     不过刚刚发现了不用改名字的方法,------> 在宏定义里加入

#import <UIKit/UIKit.h>  或者  #import <Foundation/Foundation.h>   


就可以编译通过!wtf!




2014-03-17 09:55:49 hong1595 阅读数 1392
  • 编译实战视频教程

    本课程讲授一个真实编译器、链接器的完整开发过程。编写编译器用到的知识之广是编写一般程序所无法比拟的,将综合运用编译原理,数据结构与算法,Intel x86汇编语言、机器语言,目标文件格式,可执行文件格式等知识内容。

    37772 人正在学习 去看看 王博俊


随着xcode的更新,升级到5.1版本。发现以前有些工程编译不过。.a文件不支持64位。

在Build Settings ->Architectures,发现Apple默认就是armv7,arm7s,arm64.没有

armv7,arm7s这一项了。解决办法如图





clean一下,重新编译。ok。

2016-08-26 11:50:49 saw471 阅读数 494
  • 编译实战视频教程

    本课程讲授一个真实编译器、链接器的完整开发过程。编写编译器用到的知识之广是编写一般程序所无法比拟的,将综合运用编译原理,数据结构与算法,Intel x86汇编语言、机器语言,目标文件格式,可执行文件格式等知识内容。

    37772 人正在学习 去看看 王博俊

”Build Settings”->”Enable Bitcode”设置为NO   
2019-05-05 20:29:06 shifang07 阅读数 447
  • 编译实战视频教程

    本课程讲授一个真实编译器、链接器的完整开发过程。编写编译器用到的知识之广是编写一般程序所无法比拟的,将综合运用编译原理,数据结构与算法,Intel x86汇编语言、机器语言,目标文件格式,可执行文件格式等知识内容。

    37772 人正在学习 去看看 王博俊

之前合成了静态库.a, 有时候我们会拿到别人提供的静态库,但是编译报错,这时候最先要考虑的一步就是这个静态库是否支持我们编译的架构。怎么查看支持的架构?废话不多说!下面亲自实验一下

第一步:

准备一个静态库.a文件,比如我们之前制作的 libVideoPlayerLib.a,放在桌面的test目录里。
在这里插入图片描述

第二步:

  1. 打开终端:cd 到 libVideoPlayerLib.a 所在的文件夹test下 .
  2. 查看 libVideoPlayerLib.a 包含几种架构 arch 。 (file 命令)
  3. 分离出一种架构的.a。(lipo **.a -thin armv7 -output armv7.a)
  4. 抽离.a文件的object文件.o。(ar -x armv7.a)
  5. 将.o 转换为 .m。(nm ****.o > ****.m)
Last login: Sun May  5 19:30:20 on ttys004
lzz-Mac-mini:~ suning$ cd /Users/suning/Desktop/test 
lzz-Mac-mini:test suning$ file /Users/suning/Desktop/test/libVideoPlayerLib.a 
/Users/suning/Desktop/test/libVideoPlayerLib.a: Mach-O universal binary with 4 architectures: [arm_v7:current ar archive random library] [arm64:current ar archive random library]
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture armv7):	current ar archive random library
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture i386):	current ar archive random library
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture x86_64):	current ar archive random library
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture arm64):	current ar archive random library
lzz-Mac-mini:test suning$ lipo libVideoPlayerLib.a -thin armv7 -output armv7.a
lzz-Mac-mini:test suning$ ar -x armv7.a
lzz-Mac-mini:test suning$ nm VideoPlayerLib.o > VideoPlayerLib.m

在这里插入图片描述6. 打开导出到.m 伪代码
在这里插入图片描述通过伪代码可以了解.m 的实现过程

2017-03-13 19:39:46 qq_28699375 阅读数 339
  • 编译实战视频教程

    本课程讲授一个真实编译器、链接器的完整开发过程。编写编译器用到的知识之广是编写一般程序所无法比拟的,将综合运用编译原理,数据结构与算法,Intel x86汇编语言、机器语言,目标文件格式,可执行文件格式等知识内容。

    37772 人正在学习 去看看 王博俊
最近在做相册的多选时,使用了第三方

VOKMultiImagePicker-iOS

拖到自己项目里的,然后编译报错,
找了半天,最后发现,是VOKMultiImagePicker.h文件中,19行的地方,有个枚举,用的是c语言的方式,实现的,把它改成oc的重新编译就可以了,这种错误太奇葩了,所以记录一下,

CoreData编译报错

阅读数 294

没有更多推荐了,返回首页