iOSプラットフォームの静的ライブラリで現在のプロセス情報を取得

1493 ワード

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    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 
    #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