文档章节

在iOS平台静态库中获取当前进程信息

penggy
 penggy
发布于 2016/10/20 09:50
字数 229
阅读 17
收藏 0

Objective-C 提供 NSProcessInfo 这个类来获取当前 APP 进程信息, 然而我们的静态库是 pure C++ 工程. 那么如何在 cpp 中调用 Objective-C 呢 ? 这个问题涉及 C++ 和 Objective-C 混编.

  1. 我们把获取进程信息的函数int ios_process_name(char* buf, int len);声明在 ios_process_info.h 文件中
  2. 在 ios_process_info.mm 文件中通过调用 NSProcessInfo 实现函数ios_process_name
  3. 在 .cpp 文件中 include "ios_process_info.h", 调用函数 ios_process_name

####ios_process_info.h

//
//  ios_process_info.h
//  libEasyRTSPClient
//
//  Created by 吴鹏 on 16/9/20.
//  Copyright © 2016年 org.easydarwin. All rights reserved.
//

#ifndef ios_process_info_h
#define ios_process_info_h
    
int ios_process_name(char* buf, int len);

#endif /* ios_process_info_h */

####ios_process_info.mm

//
//  ios_process_info.m
//  libEasyRTSPClient
//
//  Created by 吴鹏 on 16/9/20.
//  Copyright © 2016年 org.easydarwin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <Foundation/NSProcessInfo.h>
#import "ios_process_info.h"

int ios_process_name(char* buf, int len){
    NSString *pname = [[NSProcessInfo processInfo] processName];
    if(!pname){
        return -1;
    }
    strncpy(buf,[pname UTF8String],len-1);
    buf[len-1] = 0;
    return 0;
}

####xxx.cpp

#ifdef __MACH__
#include "ios_process_info.h"
 int ret = ios_process_name(szProcName, sizeof(szProcName));
#else
 //TODO 其它平台获取当前进程名称
#endif

© 著作权归作者所有

penggy
粉丝 1
博文 3
码字总数 1872
作品 0
合肥
程序员
私信 提问
深入iOS系统底层之静态库介绍

少长咸集,群贤毕至。--《王羲之・兰亭集序》 目标文件 目标文件结构 程序员编写的是源代码,而计算机运行的则是CPU能识别的机器指令,因此必须要有一系列工具或程序来将源代码转化为机器指令...

欧阳大哥2013
02/06
0
0
用CMake代替makefile进行跨平台交叉编译

 在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑。因为很多开源的程序,比如png,都是自带编译脚本的。我们可以使用下列脚本来进行编译: 1 2 3 ...

shzwork
04/01
39
0
iOS拆分,合并静态库以压缩打包空间

需求:拆分iOS中体积较大的第三方静态库以实现软件瘦身. 阅读前提: 了解各种架构的静态库含义 了解如何使用Terminal 简书地址 : 拆分iOS静态库 博客地址 : 拆分iOS静态库 掘金地址 : 拆分iOS...

__小___东邪___
2018/11/26
0
0
libpinyin交叉编译移植ios平台

【业务需求】 一、功能需求 本人开发多语言输入法汉语联想输入法个人能力有限,要用第三方汉语联想输入法框架,需要https://github.com/libpinyin/libpinyin 移植到ios平台,通过cmake编译i...

mamatimin
2017/10/25
11
0
libpinyin输入法框架交叉编译移植ios平台

【业务需求】 一、功能需求 本人开发多语言输入法汉语联想输入法个人能力有限,要用第三方汉语联想输入法框架,需要https://github.com/libpinyin/libpinyin 移植到ios平台,通过cmake编译i...

mamatimin
2017/10/25
18
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery底层函数-jQuery.ajaxSetup()

jQuery.ajaxSetup( options )返回: 描述: 为以后要用到的Ajax请求设置默认的值 添加的版本: 1.1jQuery.ajaxSetup( options ) options 类型: PlainObject 一个用来配置Ajax请求的"{键:值}"对,......

前端老手
30分钟前
5
0
Qt编写自定义控件56-波浪曲线

一、前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当...

飞扬青云
36分钟前
5
0
深入理解计算机系统cp1:存储单位与编码

摘要: 理解计算机是如何存储数据的。 原文:深入理解计算机系统cp1:存储单位与编码 作者:Chor Fundebug经授权转载,版权归原作者所有。 1. 存储单位 位:即 bit,表示二进制位,要么是 0 ...

Fundebug
39分钟前
5
0
Python查询比特币实时价格

在本文中我们将学习如何使用使用coinmarketcap提供的比特币行情API,编写Python程序来获取像比特币、莱特币或以太币之类的区块链数字货币的实时行情/实时价格。 1、比特币行情API调用代码 我...

汇智网教程
今天
8
0
爬虫平台Crawlab核心原理--自动提取字段算法

⚠注意: 可配置爬虫现在仅在Python版本(v0.2.1-v0.2.4)可用,在最新版本Golang版本(v0.3.0)还暂时不可用,后续会加上,请关注近期更新 背景 实际的大型爬虫开发项目中,爬虫工程师会被要...

tikazyq
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部