将ARGV和ARGC传递给Main作为数组

Passing argv and argc to main as an array

本文关键字:Main 数组 ARGV ARGC      更新时间:2023-10-16

我正在使用openCV,并且具有命令行变量的函数:

int start(int argc, char** argv)
{
    cv::CommandLineParser parser(argc, argv, keys);
    if(parser.has("help")) {
        parser.printMessage();
        return 0;
    }
....
}

我想做的是具有将变量传递给该变量的另一个函数,而不是使用命令行。我将其传递到完美运行的命令行是:

-h=6 -w=8 -pf=defaultConfig.xml -t=charuco -v=bmCalib2.mov -sz=0.045 -d=1

所以我有这个功能:

void main()
{
char* passArg[7] = { "-h=6", "-w=8","-pf=defaultConfig.xml", "-t=charuco","-v=bmCalib2.mov", "-sz=0.045", " -d=1" };
        start(7,passArg);
}

它进行了编译和运行,但结果是不同的(这是一个校准应用程序,命令行校准,功能版本没有(。

这是发送int argc, char** argv而不是使用命令行的正确方法吗?谢谢。

ah,已经解决。我需要将我的字符阵列调整为:

char* passArg[8] = { NULL,"-h=6", "-w=8","-pf=defaultConfig.xml", "-t=charuco","-v=bmCalib2.mov", "-sz=0.045", " -d=3" };

显然,.exe通常是命令行启动中给出的第一个变量。