解决思路:
官方文档说需要 对“Header Search Paths”增加头文件路径:$(SRCROOT)/项目名称
照着做了还是出现 openssl rsa.h file not found ,后来百度了很多地方都没有找到能解决的方法。
后来突然回想起# include<>跟# include""的区别后,终于找到原因了。
解决方案:
主要是头文件的路径设置问题。来看官方的demo,他们把openssl这个文件放到了项目根目录下,所以“Header Search Paths”只需要设置$(SRCROOT)/项目名称。
而我在工程中并没有把他这个文件放到项目的根目录,而比如我把openssl这个文件导入到了这个工程目录下 :
项目名称/公共类/工具&第三方/支付宝SDK/openssl ,中间隔了三个文件夹,那么在Header Search Paths 的设置就得改为
$(SRCROOT)/项目名 称/公共类/工具&第三方/支付宝SDK,这样才可以找到这个头文件解决问题
就比如这样:
接支付宝碰到的其他问题备忘
在集成支付宝的时候碰到了这么一个错误
"_CreateRSADataSigner", referenced from:
解决方法是:
Tagert--Build Phases -- Compile Sources 下添加对应的.m文件
把支付宝需要的.m文件全部加上去
用include 引用头文件时,双引号和尖括号的区别:
1.双引号:引用非标准库的头文件,编译器首先在程序源文件所在目录查找,如果未找到,则去系统默认目录查找,通常用于引用用户自定义的头文件。
2.尖扩号:只在系统默认目录(在Linux系统中通常为/usr/include目录)或者尖括号内的路径查找,通常用于引用标准库中自带的头文件。
综上,标准库自带的头文件既可以用双引号也可以用尖括号,不过习惯使用尖括号,用户自定义的头文件只能用双引号。
一般情况下 这么用:自己写的用双引号,第三方库或者系统的库的头文件用尖括号。要不然经常会出现乱七八糟的错误。
我习惯用双引号。结果今天在使用mysql的库函数的头文件的时候也用双引号,虽然在附加依赖项里面添加了头文件的路径,最后却被一个找不到头文件的错误搞晕了。
所以切记,只有自己写的用双引号
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/167.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!