ios .mm文件调用c语言函数报错,在苹果iOS平台中获取当前程序进程的进程名等信息...

本文由EasyDarwin开源团队成员Penggy供稿;

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

我们把获取进程信息的函数int ios_process_name(char* buf, int len);声明在 ios_process_info.h 文件中

在 ios_process_info.mm 文件中通过调用 NSProcessInfo 实现函数ios_process_name

在 .cpp 文件中 include "ios_process_info.h", 调用函数 ios_process_name

ios_process_info.h

//

// ios_process_info.h

// libEasyRTSPClient

//

// Created by Penggy 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 Penggy on 16/9/20.

// Copyright © 2016年 org.easydarwin. All rights reserved.

//

#import

#import

#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

获取更多信息

Copyright © EasyDarwin.org 2012-2016

没有苹果电脑打包iOS平台的 Ionic 2程序——《Ionic 2 实例开发》更新内容

没有苹果电脑打包iOS平台的 Ionic 2程序--更新内容春节刚过,祝各位新的一年里万事如意,一帆风顺.在这段时间里更 ...

Android中获取应用程序(包)的大小-----PackageManager的使用(二)

通过第一部分<>的介绍,对PackageManager以及 AndroidMani ...

IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)

IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...

如何在不同的语言&sol;平台中获取Android ID

如何在不同的语言/平台中获取Android ID 最近开发工作中需要使用到AndroidID,在Unity和native code中也需要使用,java获取很方便,Unity中也不难,最难的是在nat ...

如何用Python在豆瓣中获取自己喜欢的TOP N电影信息

一.什么是 Python Python (蟒蛇)是一门简单易学. 优雅健壮. 功能强大. 面向对象的解释型脚本语言.具有 20+ 年发展历史, 成熟稳定. 具有丰富和强大的类库支持日常应用. 1989 ...

iOS开发中获取WiFi相关信息

iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...

iOS 平台开发OpenGL ES程序注意事项

本人最近从Android平台的OpenGL ES开发转到iOS平台的OpenGL ES开发,由于平台不同,所以开发中会有一些区别,再次列出需要注意的几点. 1.首先需要了解iOS主要开发框架,再次仅介 ...

【转】如何开发苹果iOS操作平台下的应用程序?

原文网址:http://zhidao.baidu.com/link?url=vxRWjCchSstFmVKvxEqLqfqomu2h5kF-NLAIVEehQgN_FnYtEi4f5yPMS6ywbU ...

Android中获取应用程序&lpar;包&rpar;的信息----PackageManager

本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:   第一部分: 获取应用程序的packagena ...

随机推荐

【转】ios的控件UIScrollView的位置定位---------逐渐积累

原文网址:http://blog.csdn.net/z343929897/article/details/8106408 UIScrollView的判断位置的属性如下:   contentSize:C ...

&lpar;easy&rpar;LeetCode 205&period;Reverse Linked List

Reverse a singly linked list. 解法一:记录单链表每个节点的val,然后重新为单链表赋值.(取巧,仅仅是将val部分改变,原始node节点并没有改变) 代码如下: /** ...

MySQL 5&period;7&period;9多源复制报错修复

版本:5.7.9 用5.7.9的版本搭建MySQL多源复制测试环境 开发说复制出现问题,上去看了一下: mysql> show slave status\G******************* ...

c&num;基础编程—泛型

一.引言 泛型的主要思想是将算法与数据结构完全分离开,使得一次定义的算法能作用于多种数据结构,从而实现高度可重用的开发.泛型,通过参数类型化来实现在同一份代码中操作多种数据类型,利用“参数化类型”将类 ...

hibernate学习&lpar;二&rpar;

hibernate 单向一对多映射 一.数据表设计 数据库名:hibernate5 数据表: ①表名:CUSTOMERS 字段: CUSTOMER_ID  CUSTOMER_NAME ②表名:ORDE ...

第二节windows系统下Xshell 5软件远程访问虚拟机 Linux系统

下载Xshell 5软件在windows下安装 安装好后Xshell 5启动软件 下一步,检查虚拟机,配置是否正确 下一步,设置网络,保障虚拟机系统能够连接网络 下一步,进入虚拟机系统,检查虚拟机网络 ...

vijos1080题解

题目: 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,20 ...

Java中Set的contains&lpar;&rpar;方法

Java中Set的contains()方法 -- hashCode与equals方法的约定及重写原则 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashCode() a ...

2018&sol;12&sol;21:Date类

1.Date类 getDate()返回一个月的某一天 1-31 getDay()返回一周的某一天 getFullyear()返回四位数的年份 getMonth()返回月份 比实际情况小 1 0代表1月 ...

vmware workstations下安装CentOS7

vm虚拟机上安装CentOS7参考博文: https://www.cnblogs.com/wcwen1990/p/7630545.html 最小化安装后,没有ifconfig等命令的解决方法参考博文: ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值