c++工程在 Mac 下编译成.a库调用
最近在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库调用相关推荐
- iOS架构-c++工程在Mac下编译成.a库并调用(12)
请先了解:xcode生成静态库文件.a 前言: 有时侯需要使用c++的一些代码库,这里先讲一下用Xcode 建C++ 工程,并将代码编译成.a库,提供给demo使用.这里只是简单的介绍,以后会继续介绍 ...
- iOS架构-C/C++lame库在Mac下编译通用静态库.a库(13)
C/C++ 有很多成熟的库,还有很多特殊功能的库,有时候iOS 平台开发一些比较前沿或者冷门的功能时,iOS并没有提供解决方案,这时候就可以研究C/C++的一些库,为我们使用.但是在Xcode编译C/ ...
- mac下编译hadoop-3.0.3
文章目录 1.编译前准备 2. 源码目录下执行 3.编译 5.错误集锦 5.1 Apache Hadoop Pipes编译失败 5.1.2 解决: 5.2 hadoop-client-check-te ...
- mac下编译安卓源码
资源 Mac OS10.12 编译Android源码8.1 aosp编译-需翻墙 Mac下编译安卓源码 手把手教你在Mac OS下载.编译及导入Android源码 步骤 准备 磁盘空间大于180G 安 ...
- 在Mac下编译ijkplayer os文件
在Mac下编译ijkplayer os文件 第一步: 1.安装homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com ...
- android studio中把c/c++文件编译成.so库(一)
2019独角兽企业重金招聘Python工程师标准>>> 最近的项目涉及到JNI编程,经过一段时间的JNI编程之后,终于完美弄完了.所以,把在android studio中编译c/c+ ...
- 属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)
文章目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidget ...
- Android导入第三方静态库.a编译成动态库.so
http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己 ...
- android.bp编译生成so,Android导入第三方静态库.a编译成动态库.so
在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的 ...
最新文章
- Smarty3 配置
- matlab pca 测试样本,matlab_PCA,训练集与测试集分开,原理和用法
- CSS Sprites图片拼合生成器实现思路
- Hacked VisualSVN Server by PHP to allow user change password
- SQLite FTS3/FTS4与一些使用心得
- latex 表格中虚线_如何识别和修复表格识别中的虚线
- Teams团队的成员列表API的已知问题
- 计算机二级考试试题在线看,【TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读材料】...
- 〖Linux〗使用ssh登录远程主机,并在本地打开远程图形界面
- 在windows Console 平台下面 用glut编写 opengl程序 注意
- mysql 序列自增长 恢复到1_MySQL查询结果另外自带一列自增序列号
- 10的28次方C语言,c语言编程测定28的28次方有多少位
- java 网站 分类
- 来,和人工智能对对联过大年!
- 建行网银登录密码被盗,然后遭遇电话诈骗
- matlab ols hac,R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
- 理解 Joomla 的几个概念 - 读《Aprees.Begging.Joomla.From.Novice.to.Professional》
- 曼切斯特大学计算机专业世界排名,2021年曼彻斯特大学在世界排名第几?哪些专业在全球TOP50?...
- AutoCAD参照编辑期间不允许使用 SAVE 命令怎么办
- 坐标沿着原点旋转/坐标轴旋转变换公式
热门文章
- D. Puzzles [排列组合]
- RouterOS(ROS)软路由安全性配置指南
- 【数据结构】迷宫问题实现(包含界面)
- TIOBE9月编程语言排行榜:时隔五年,为什么C语言依然排行第一
- Harbor 组成原理
- python:用OLS 求企业的净利润年平均增长率
- 【Java】UML类图详解-详细易懂
- FLAASH大气校正过程中内存资源不足解决方法
- 【宋红康 MySQL数据库】【00】课程大纲
- QT项目移植后报错:无法打开包括文件: “ui_xxx.h”