首页 > 解决方案 > 当我将字符串从 .mm 文件传递​​到 .cpp 文件时,程序编译得很好,但在运行时我在 Xcode 中收到错误“EXC_BAD_ACCESS”

问题描述

我的 .mm 文件 -

std::string argv([argumentString UTF8String]);
int x = obj.zmain(argumentCount,argv);

obj 是 ZMain 类型的对象。

我的 .cpp 文件 -

    int ZMain::zmain(int argc,std::string argv) {

        std::istringstream iss(argv);
        std::string s;
        char *paramArray[argc];
        int i=0;
        while ( getline( iss, s, ' ' ) ) {
            strcpy(paramArray[i],s.c_str());
            std::cout<<paramArray[i]<<std::endl;
            i++;
        }
       return 0;
}

我有时在循环内,有时在循环之前,有时在循环之后收到错误“EXC_BAD_ACCESS”。会有什么问题?

标签: c++objective-cxcodemacos

解决方案


在 Objective-C 端使用NSArray<NSString *> *argv = [[NSProcessInfo processInfo] arguments],其中包含已解析的值(请参阅此问题 - Accessing command line arguments in Objective-C)。

然后std::vector<string>在传递给 zmain.cpp 之前将其转换为(请参阅NSMutableArray 到 std::vector)。


推荐阅读