最近在IOS开发中有多次要集成c++工程,所以整理了一下怎么在Mac下把C++工程编译成.a库,在IOS中调用。


 **clang实现**

第一步 准备

a 创建一个C++ demo工程

b 创建一个头文件

#ifndef ZBLIB_ZBHEADER_H
#define ZBLIB_ZBHEADER_Hclass CTestLib
{
public:virtual void test(const char *str) = 0;virtual void helloWorld() = 0;
};extern  CTestLib *GetClass();#endif //ZBLIB_ZBHEADER_H

c demo类

//
// Created by bigfish on 2019-03-12.
//#ifndef ZBLIB_TEST_H
#define ZBLIB_TEST_H#include "ZBHeader.h"class Test :public CTestLib {
public:Test(){};virtual ~Test(){};virtual void test(const char *str);virtual void helloWorld();
};#endif //ZBLIB_TEST_H
//
// Created by bigfish on 2019-03-12.
//#include "Test.h"
#include <stdio.h>
#include <unistd.h>CTestLib *GetClass()
{return (new Test());
}void Test::helloWorld()
{printf("====  helloWorld,I'm test lib  ==== \n");
}void Test::test(const char *str)
{printf("====  say:%s in lib  ==== \n",str);
}

第二步 编译

** a, 编译成.o 指定x86_64架构 **

clang++  -arch x86_64 -g -o zbLib.o Test.cpp -c

** b, 打包成.a库 **

ar -r libzblib.a zbLib.o  (多个.o 可以拼接)

第三步 使用


#import "ViewController.h"
#include "ZBHeader.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];CTestLib *test = GetClass();test->helloWorld();test->test("ios");}@end

调用效果

试着直接用 g++ -shared -lc -s -o zbLib.a Test.cpp 结果生成的库是 MacOS的,暂时没有找到解决方案,cmake也不会搞。后面搞懂这两点再来改

我们依然可以查看符号表,这里要怎么隐藏呢?

c++工程在 Mac 下编译成.a库调用相关推荐

  1. iOS架构-c++工程在Mac下编译成.a库并调用(12)

    请先了解:xcode生成静态库文件.a 前言: 有时侯需要使用c++的一些代码库,这里先讲一下用Xcode 建C++ 工程,并将代码编译成.a库,提供给demo使用.这里只是简单的介绍,以后会继续介绍 ...

  2. iOS架构-C/C++lame库在Mac下编译通用静态库.a库(13)

    C/C++ 有很多成熟的库,还有很多特殊功能的库,有时候iOS 平台开发一些比较前沿或者冷门的功能时,iOS并没有提供解决方案,这时候就可以研究C/C++的一些库,为我们使用.但是在Xcode编译C/ ...

  3. mac下编译hadoop-3.0.3

    文章目录 1.编译前准备 2. 源码目录下执行 3.编译 5.错误集锦 5.1 Apache Hadoop Pipes编译失败 5.1.2 解决: 5.2 hadoop-client-check-te ...

  4. mac下编译安卓源码

    资源 Mac OS10.12 编译Android源码8.1 aosp编译-需翻墙 Mac下编译安卓源码 手把手教你在Mac OS下载.编译及导入Android源码 步骤 准备 磁盘空间大于180G 安 ...

  5. 在Mac下编译ijkplayer os文件

    在Mac下编译ijkplayer os文件 第一步: 1.安装homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com ...

  6. android studio中把c/c++文件编译成.so库(一)

    2019独角兽企业重金招聘Python工程师标准>>> 最近的项目涉及到JNI编程,经过一段时间的JNI编程之后,终于完美弄完了.所以,把在android studio中编译c/c+ ...

  7. 属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)

    文章目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidget ...

  8. Android导入第三方静态库.a编译成动态库.so

    http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己 ...

  9. android.bp编译生成so,Android导入第三方静态库.a编译成动态库.so

    在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的 ...

最新文章

  1. Smarty3 配置
  2. matlab pca 测试样本,matlab_PCA,训练集与测试集分开,原理和用法
  3. CSS Sprites图片拼合生成器实现思路
  4. Hacked VisualSVN Server by PHP to allow user change password
  5. SQLite FTS3/FTS4与一些使用心得
  6. latex 表格中虚线_如何识别和修复表格识别中的虚线
  7. Teams团队的成员列表API的已知问题
  8. 计算机二级考试试题在线看,【TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读材料】...
  9. 〖Linux〗使用ssh登录远程主机,并在本地打开远程图形界面
  10. 在windows Console 平台下面 用glut编写 opengl程序 注意
  11. mysql 序列自增长 恢复到1_MySQL查询结果另外自带一列自增序列号
  12. 10的28次方C语言,c语言编程测定28的28次方有多少位
  13. java 网站 分类
  14. 来,和人工智能对对联过大年!
  15. 建行网银登录密码被盗,然后遭遇电话诈骗
  16. matlab ols hac,R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
  17. 理解 Joomla 的几个概念 - 读《Aprees.Begging.Joomla.From.Novice.to.Professional》
  18. 曼切斯特大学计算机专业世界排名,2021年曼彻斯特大学在世界排名第几?哪些专业在全球TOP50?...
  19. AutoCAD参照编辑期间不允许使用 SAVE 命令怎么办
  20. 坐标沿着原点旋转/坐标轴旋转变换公式

热门文章

  1. D. Puzzles [排列组合]
  2. RouterOS(ROS)软路由安全性配置指南
  3. 【数据结构】迷宫问题实现(包含界面)
  4. TIOBE9月编程语言排行榜:时隔五年,为什么C语言依然排行第一
  5. Harbor 组成原理
  6. python:用OLS 求企业的净利润年平均增长率
  7. 【Java】UML类图详解-详细易懂
  8. FLAASH大气校正过程中内存资源不足解决方法
  9. 【宋红康 MySQL数据库】【00】课程大纲
  10. QT项目移植后报错:无法打开包括文件: “ui_xxx.h”