编译器报错汇总

1.arm7 arm7s 真机32位处理器 arm64  真机64位处理器

2.i386 模拟器32位处理器   x86_64模拟器64位处理器

3.linker .o  可能有依赖库未导入 , 库重复导入;

4.libsqlite3 数据库

今天试了一下iPhone Sqlite3数据库实例操作,发现一个有意思的问题,就是在加Framework时,有些教程说加libsqlite3.dylib有些说加libsqlite3.0.dylib,那到底加哪个呢?经过百度和谷歌得答案如下:

实际上libsqlite3.0.dylib本身是个链接,它指向libsqlite3.dylib。也就是说在项目里如果你添加libsqlite3.dylib和添加libsqlite3.0.dylib其实是添加了同一个文件,没有区别,那为什么要添加libsqlite3.dylib呢?

其实这个指针总是指向最新的sqlite3动态库,比如说sqlite3库更新了,如果我们引用的是libsqlite3.0.dylib你就不需要做任何修改了。

5.工程中引入的第三方库zxing、高德sdk编译不过,原因是这些库中引用的libstdc++.6.0.9.dylib中的C++函数不支持模拟器;

6.C++ 和 OC 混编时

当使用Xcode编写C++代码时,难以避免要使用xcode/C++混合编译。

如果你在Xcode中编写的工程中既有Objective-C代码,又有C++代码,在没有任何设置编译器选项的默认情况下,你将会发现一下问题:

(1)编译器报错。莫名其妙的错误,如C++的关键字(如virtual, new, delete等)找不到,不能解析啊等问题

(2)以*.cpp结尾的纯C++代码编译没有问题,但是既有Objective-c又有C++的文件(*.mm)文件就会报各种问题

在Xcode中,通常,Objective-c的后缀名位 .h/.m,C语言的后缀名为 .h/.c, C++的后缀名为.h/.cpp, 当一个文件中既有objective-c又有C++代码时,后缀名为 .h/.mm。在编写代码时要写对后缀名。其次,你可能发现,后缀名都写对了,代码也没有任何问题,编辑器也没有报错,为什么编译的时候就报错了呢?事实上,编译器和编辑器的工作是区分开来的,编辑器就是你写代码的地方,仅检查代码语法是否有错误,你语法没有错误当然不会报错了。编译器就是要编译运行在编辑器中编写好的代码,如果编辑器仅支持Objective-C,它怎么可能编译的了C++代码呢?

要让编译器知道代码中有C++代码,要对编译器做一些设置,先看图:

1.单击你的工程,选择TARGET下的目标文件

2.在选项卡中选择“Build Settings”选项

3.找到“Apple LLVM compiler x.x - Language”设置项(其中x.x为你的xcode默认的LLVM编译器版本,不同的xcode版本不一样)

4.图中绿色选中的选项“Compile Sources As”,意思是要把工程按照哪一种语言进行编译,默认是第一个“According to File Type”,将其改成Objective-C++即可。

现在重新编译一下你的工程是不是就可以成功编译了呢。

时间: 2024-08-24 12:54:17

编译器报错汇总的相关文章

eclipse 报错汇总

1.Eclipse 启动时,报错: Fail to create the java virtual machine 已解决.方法:eclipse.ini 中-vmargs-Dosgi.requiredJavaVersion=1.6-Xms40m修改-Xmx768m → -Xmx512meclipse 报错汇总,布布扣,bubuko.com

编译器报错:'IHTMLControlElement' : redefinition

由于我安装了platform SDK,编译导致错误: error C2367: 'IHTMLControlElement' : redefinition; different uuid specifiers 解决办法: 将 C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\Mshtml.h 的 interface DECLSPEC_UUID("04598fc6-866c-11cf-ab7c-00aa00c08fcf") 换成 i

CentOS 6.5 安装YouCompleteMe 报错汇总

支持折腾!!! 编译安装clang 3.6.0   编译器版本低 ====-----编译安装clang 3.6.0   编译器版本低---------------============== [[email protected] llvm-3.6.0]$ tar xf cfe-3.6.0.src.tar.xz  [[email protected] llvm-3.6.0]$ tar xf clang-tools-extra-3.6.0.src.tar.xz  [[email protected]

赛码网线上PHP编译器报错

360笔试题,在赛码网提交后报错“Runtime Error:[ERROR] A Not allowed system call: runid:6660947 callid:25” 题目链接:http://exercise.acmcoder.com/online/online_judge_ques?ques_id=3980&konwledgeId=42 报错内容: 产生该错误的代码: 申明:不是因为代码逻辑原因产生错误,首先代码逻辑是按照官方给出的答案通过php实现:其次,同样的用例在本地运行(

selenium报错汇总

报错:[error] Could not connect to Selenium Server. Have you started the Selenium Server yet? 解决:selenium两种驱动方式,一是use selenium IDE,一种是use selenium webdriver.在options里去掉勾选enable webdriver playback即可. Google答案地址. http://sqa.stackexchange.com/questions/100

使用apache benchmark(ab) 测试报错汇总

1.socket: Too many open files (24) 解决方法: [[email protected] ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 14802 max locked memory (kby

masterha_check_repl报错汇总

[[email protected] ~]#masterha_check_repl --conf=/etc/masterha/app1.cnf 导致如下报错的原因主要有两类: 1.mysql的安装时用源码安装,导致mysql的目录与MHA默认的目录不一致.解决办法用ln -s做相关软连接.注:我的mysql数据库是用mysql用户安装的,MHA是用root用户安装的,如果在同一个用户下安装不知是否可以避免此类问题 2.candidate_master对应的用户权限不足导致. 以下内容摘自网络 报

SQL Server报错汇总

1)SQL Server服务突然无法启动 问题描述:之前一直没有问题,突然某天无法启动了 解决办法:查看控制面板->管理工具->事件查看器,发现是因为登录失败而无法启动. 找到原因,就简单了,从服务中找到SQL Server的服务,右键属性,然后打开"登录"tab页,选上本地系统,就OK了. 该问题多半是因为更改了操作系统的登录密码造成了.所以要更新sqlserver的账户登录密码.当然,最好的方式就是就是上面的觪决办法了. 这样以后就会自动更新. 2)17051错误 代码

P2V 报错汇总

本文所记录的报错,是笔者操作中遇到的,如果没有在本文中没有你操作中的错误,还是查看日志/var/log/    会有virt-p2v8897877989.log  等这样的日志. P2v 报错 virsh pool-define-as kvm_final --type dir --target /kvm/ pool kvm_final defined error: Failed to reconnect to the hypervisor error: no valid connection e