objective-c的优点是兼容c++代码,所以我们在项目中可以很方便的把c++实现的库拿过来使用,不过使用时需要设置一些地方,因为没有设置好会带来很奇怪的问题
下面是在使用这些库时编译器报的错,可以看到报的错很让人摸不着头脑
刚开始一直以为是target里header search path没有设置正确,所以在build settings里折腾了很久。
后来请教了很多大师,才知道这是库代码在引用c++的基础类型时没有引用到导致的,我们需要把相应的引用了c++库的类设置一下。主要是设置这个类的编译类型,
有两种设置方法
- 在build settings下面有个Apple LLVM 5.1 - Language,我们可以设置我们的代码是用什么方式编译的,如下图
默认是According to File Type,这样xcode在编译时会去查找每个oc文件的设置,oc文件的设置地方在.m文件的show in File inspector里,如下图
我们可以选择不同的type
默认是Objective-c Sourcce,如果我们引入的库使用的是c++代码实现,我们就需要把该文件设置成Objective-C++ Source了,这样xcode在编译时就不会产生找不到__char16_t这种错误了
- 还有一种方法是直接在build settings的Apple LLVM 5.1 - Language中设置,就是前面我们看到的Compile Sources As设置项,在这里直接设置成下图就行了