当前位置: 首页 > news >正文

mac os下通过命令行的方式编译c++代码并在xcode里引用

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 

 

相关文章:

  • 房地产英语 Real estate词汇
  • 根据Forms名找出其所归属的权限组
  • oss web直传
  • dd-wrt达到300Mbps的关键设置
  • 跨域
  • [转载] 考试经验——2011下半年信息系统项目管理师论文52分者谈论文写作经验...
  • 『TensorFlow』TFR数据预处理探究以及框架搭建
  • shell开发基础:准备100万条测试数据在MYSQL中
  • 十个生成模型(GANs)的最佳案例和原理 | 代码+论文
  • Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
  • Spring Boot快速入门(一):Hello Spring Boot
  • 一致性hash
  • LabView和DLL中的参数问题
  • Oracle高级复制
  • 浅谈回归(二)——Regression 之历史错误翻译
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android开源项目规范总结
  • avalon2.2的VM生成过程
  • CODING 缺陷管理功能正式开始公测
  • express如何解决request entity too large问题
  • JavaScript 基本功--面试宝典
  • Netty源码解析1-Buffer
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 不上全站https的网站你们就等着被恶心死吧
  • 前端性能优化——回流与重绘
  • 全栈开发——Linux
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​什么是bug?bug的源头在哪里?
  • #HarmonyOS:软件安装window和mac预览Hello World
  • $().each和$.each的区别
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)常见O(n^2)排序算法解析
  • (12)目标检测_SSD基于pytorch搭建代码
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Note)C++中的继承方式
  • (第一天)包装对象、作用域、创建对象
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net wcf memory gates checking failed
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /etc/sudoers (root权限管理)
  • ?.的用法
  • [20160902]rm -rf的惨案.txt