1编写c++类:
c.h
#include <stdio.h>
class AA {
public:
void Go();
};
c.mm
#include "c.h"
AA::Go() {
printf("AA::Go");
}
2编译刚刚写的类,分两 种运行环境,一种是在模拟器下运行,编译的目标代码架构为i386,一种是在真实iphone ipad里运行,目标代码架构为armv7,我们先编译可以在模拟器里运行的,要用模拟器的gcc编译器,打开命令行,键入命令:
cd /program/code/
/Developer/platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2 -arch i386 -c -I./ ./c.mm
这样在源代码目录下会生成一个c.o文件,这就是我们需要的目标文件,如果要编译arm架构的,可用
/Developer/platforms/ios.platform/Developer/usr/bin/llvm-g++-4.2 -arch i386 -c -I./ ./c.mm
3打开xcode,新建一个ios应用程序,弄好后点击项目名,选择build phases,然后选 择link binary with librarys,展开后点击+号, 浏览选择刚刚生成的c.o,编译然后运行就可以了,objective-c的调用代码如下,注意要将调用的objective-c的源代码文件的扩展名.m改为.mm以支持objective-c与c++的混编:
-(void) viewDidLoad {
[super viewDidLoad];
AA *a = new AA();
a->Go();
delete a;
}
注:
又试了一下,把llvm-g++-4.2改为g++-4.2也可以编译成功并运行良好,说明可以用gcc编译器编译好后再用llvm-gcc(XCODE使用的)编译器引用
/Developer/platforms/ios.platform/Developer/usr/bin/g++-4.2 -arch i386 -c -I./ ./c.mm
原文链接: https://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/05/22/2513178.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/50760
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!