C++ 将argv和argc作为数组传递给main
我使用的是opencv,有一个函数可以接受命令行变量:C++ 将argv和argc作为数组传递给main,c++,opencv,command-line,C++,Opencv,Command Line,我使用的是opencv,有一个函数可以接受命令行变量: int start(int argc, char** argv) { cv::CommandLineParser parser(argc, argv, keys); if(parser.has("help")) { parser.printMessage(); return 0; } .... } 我想做的是,让另一个函数将变量传递给这个函数,而不是像现在这样使用命令行。 我传递给
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);
}
它编译并运行,但结果不同(它是一个校准应用程序,命令行进行校准,而函数版本不进行校准)
这是发送intargc,char**argv
而不是使用命令行的正确方法吗?
谢谢。啊,已经解决了。我需要将我的字符数组调整为:
char*passArg[8]={NULL,“-h=6”、“-w=8”、“-pf=defaultConfig.xml”、“-t=charuco”、“-v=bmCalib2.mov”、“-sz=0.045”、“-d=3”}代码>
显然,.exe
通常是命令行启动中给出的第一个变量 void main
有误吗“-d=1”中的空格需要吗?应该是const char*
我很惊讶这竟然是基于OpenCV文档编译的