如何在Visual Studio中传递多个命令参数?

3
我正在使用LZMA SDK开发一个压缩/解压缩项目。
主程序包含一些必须使用的参数来运行应用程序。
要从命令行运行它,我使用以下命令:
./LzmaUtil.exe e input.elf output.elf

我正在使用VS 2013,因此我已将e in.elf out.elf添加到命令参数中,重建项目(生成可执行文件),但当我按下运行时似乎没有任何反应。

请注意,我在debug文件夹中有input.elf,并且.exe也在那里。标志e用于压缩文件,output.elf是压缩文件。

Issue VS 2013

主函数包含:

int MY_CDECL main(int numArgs, const char *args[])
{
    char rs[800] = { 0 };
    int res = main2(numArgs, args, rs);
    fputs(rs, stdout);
    return res;
}

完整的源代码可以在以下链接中获取:http://www.7-zip.org/sdk.html

调试:

如果没有任何参数,我会得到以下结果:

The program '[5284] LzmaUtil.exe' has exited with code 0 (0x0).

根据我提到的参数,我得到:

The program '[5284] LzmaUtil.exe' has exited with code 1 (0x1).

有些事情正在发生!!!

在main函数处设置断点我得到了:

numArgs 4   int
args    0x007eaca8 {0x007eacbc "E:\\1PFE\\LZMA\\LzmaUtil\\Debug\\LzmaUtil.exe"} const char * *

非常感谢您的帮助,谢谢。


1
如果在 main 函数的开头设置断点会发生什么?如果“命令参数”字段为空会发生什么? - Jabberwocky
args[0] 指向 "E:\\1PFE\\LZMA\\LzmaUtil\\Debug\\LzmaUtil.exe"args[1] 指向 "e"args[2] 指向 "in.elf" 等。这是相当基础的 C 语言内容。 - Jabberwocky
@MichaelWalz 是的,我知道这个,但是我没有得到任何输出!!! - The Beast
你没有提供完整的代码,链接指向LZMA SDK。 - kennyzx
@MichaelWalz,我认为源代码没有问题,因为从命令行运行生成的应用程序是可以正常工作的。 - The Beast
显示剩余8条评论
1个回答

1
输出为空是因为我把文件放在了调试文件夹中,与可执行文件在同一个文件夹中。
但当我把文件放在父目录(解决方案文件夹)中时,它最终起作用了。
这就是 Visual Studio 的工作方式!

1
你应该为你的问题准备一个格式良好的答案。 - Fantastic Mr Fox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接