【发布时间】:2015-09-15 09:42:17
【问题描述】:
我正在编写一个跨平台应用程序,需要将 argc 和 argv 从 Xcode 中的 Objective-C 传递到我在 C++ 中的通用参数处理程序类。我有一个指向这个处理程序类的全局指针,我用 new 命令设置了它,但是因为我不能在 Objective-C 中执行 new,所以我正在尝试以下操作:
我有一个名为 MacCommandLineArgs.h 的头文件,其中仅包含以下内容:
static int cmdlArgc = 0;
static const char** cmdlArgv = NULL;
然后我从main.m 中设置这些:
int main(int argc, char *argv[])
{
cmdlArgc = argc;
cmdlArgv = (const char**)argv;
return NSApplicationMain(argc, (const char **)argv);
}
进入应用程序的 Objective-C++ 部分后,我尝试读回这些全局变量,以便将它们传递给纯 C++ 类:
int argc = cmdlArgc;
const char** argv = cmdlArgv;
globalCommandLineArgs = new CCommandLineArgs(argc, argv);
使用调试器单步执行时,cmdlArgc 和 cmdlArgv 显示为有效数据,但分配后 argc 和 argv 仍然为 0 和 NULL。我在这里做错了什么?
【问题讨论】:
-
您是否在同一个文件中阅读它们?请为阅读代码提供更多上下文。
标签: c++ objective-c objective-c++