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

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

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


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

#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!




2019-05-05 20:29:06 shifang07 阅读数 653
  • 编译实战视频教程

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

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

之前合成了静态库.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 的实现过程

2019-07-22 10:11:47 weixin_28927079 阅读数 247
  • 编译实战视频教程

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

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

Qt使用5.12.2编译ios simulator平台代码,报错:

Undefined symbols for architecture x86_64:

  "_backtrace_from_fp", referenced from:

      QMacAutoReleasePool::QMacAutoReleasePool() in libQt5Core_debug.a(qcore_mac_objc.o)

ld: symbol(s) not found for architecture x86_64

项目配置为macOS10.13 + Qt5.12.2 + xcode9

Qt官网查看5.12平台支持配置

mac10.13从商店无法安装xcode10,需要升级mac10.14,这种方法太麻烦,尝试Qt更低的版本5.10.0

编译通过:

CoreData编译报错

阅读数 303

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