您的位置:首页 > 编程语言 > C语言/C++

OC与C++混编工程配置

2015-05-29 10:59 453 查看
新公司做室内地图引擎,类似于百度地图的这种,底层是C++ openGLES写的一套接口,在这个基础上需要进行OC的封装,在这里写一些过程中需要注意的点;

先说几个工程配置的问题:

-ObjC的使用,在TARGETS-build settings-Linking- Other Linker flags中添加的该参数,该参数的使用一般是针对OC catagray的,百度的解释是:”这个flag告诉链接器把库中定义的Objective-C类和Category都加载进来。这样编译之后的app会变大(因为加载了其他的objc代码进来)。但是如果静态库中有类和category的话只有加入这个flag才行“,目前暂时不知道该标识是否会影响C++混编;



关于Library路径搜索的一点问题:

我们在进行三方库引用时候经常会发生链接错误的问题,工程跑一大堆的红色错误,大多数情况是因为系统引用不到所需要的文件导致的。一种可能性是工程中的引用文件已失效,虽然代码仍旧在文件夹中,但是没有与xcode工程挂勾,解决办法是删除工程中的目录,Add Files to ""导入真实存在的文件,这种情况一般解决起来比较容易;如果还引用不到,可以到TARGETS-Build Phases-Compile Sources下查看,把没有添加到的添加进去;



另外一种是Library,也就是我们常用的静态库链接错误,一般是工程找不到三方资源的查找目录,如果你想查看你现在的引用查找目录,TARGETS-bulid settings-Search path下Library Search Path就能看得到,这时你会发现这里有两个Debug和release。

这里将要添加的路径是你的静态库的搜索目录,把目录路径添加到里面就可以了; 不过有一点,我们在工程调拭的时候一般会用到真机和模拟器两种情况,打过包的同学知道这两种包的名字是一模一样的,而且把包文件一般会分在两个目录下,



如上图这样子,而我们要添加这样的库时会把两个文件夹放到一个文件下,这样有时会导致编译器查找不到二进制的文件而导致编译错误,所以我们要配置一下Library Search Path;这里要说一下添加的宏命令;

$(PROJECT_DIR)/FMMapKit/3rd/${CONFIGURATION}-${PLATFORM_NAME}

如上所示,${CONFIGURATION}宏表示Debug或者是Release版本的,${PLATFORM_NAME}表示是模拟器还是真机目录,加上中间的那个”-“,我们看一下是不是跟上图中显示的那个目录名字是对应的呢?在这里你可以百度一下/article/7587997.html,可以查看更多宏替换的资料;

接下来要说一下关于C++相关的配置,这里涉及的应该是与编译器相关的知识,暂时属于盲区,有兴趣的可以买龙书研究一下,这里不多说,直接上图;



还有一项:



哦不对,这里是两项;

估计这里设置的是C++和C的版本,暂时未解;

到此,工程配置先说到这里,改天继续;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: