IOS库引用产生的bug - Apple LLVM 5.1 - Language

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设置项,在这里直接设置成下图就行了技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。