7

VS 没有使用我传入的“命令参数”运行。我做错了什么?

尝试在 Visual Studio 中使用“命令参数”。
我将其分解为 C 语言中的一个简单的小 ConsoleApplication 程序。

#include "pch.h"
#include <iostream>

int main(int argc, char *argv[])
{
  printf("\nargv: ");
  for (int i = 0; i < argc; i++)
  {
    printf(" %s", argv[i]);
  }
  printf("\n");
}

然后我设置“命令参数”:项目:属性:调试:“命令参数”:妈妈

在此处输入图像描述

我点击 RUN 按钮并显示(我的参数未传入):

argv:  C:\Users\jack\source\repos\ConsoleApplication45\Debug\ConsoleApplication45.exe

C:\Users\jack\source\repos\ConsoleApplication45\Debug\ConsoleApplication45.exe (process 1812) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .

当我从命令行运行时,我得到(使用传入的参数按我的意愿工作:“妈妈”):

C:\Users\jack\source\repos\ConsoleApplication45\Debug>ConsoleApplication45.exe mom

argv:  ConsoleApplication45.exe mom

C:\Users\jack\source\repos\ConsoleApplication45\Debug>

感谢您提供链接 Jean-François Fabre:
是的,我必须从 x86 更改为 x64。

在此处输入图像描述

4

3 回答 3

5

https://social.msdn.microsoft.com/Forums/vstudio/en-US/4097114c-8678-46bb-ba3b-7a2da8514efc/visual-studio-2017-not-passing-command-line-arguments-to中所述-the-application?forum=vsdebug ,当您需要为其他 CPU设置参数时,您只为 x64 目标设置参数。

您可能正在运行 x86,其中参数为空。

最好的方法是将它们设置为“任何 CPU”,因为它不太可能根据您的目标处理器而有所不同。

于 2019-01-14T20:56:49.863 回答
3

我认为您的主要问题是解决方案配置/调试属性与您实际调试/运行解决方案的平台不匹配。

确保这些对齐。

示例 - 此配置适用于Platform: x64

在此处输入图像描述

运行/调试解决方案时,您需要确保在同一平台上进行调试:

在此处输入图像描述

如果您的平台不是,则在或按照建议x64,配置和运行项目。Platform: x86All Platforms

于 2019-01-14T21:30:56.453 回答
1

我以为我看到了类似的问题,但意识到问题出在“属性页”对话框的操作上。在以前版本的 Visual Studio 中,选择一个项目并右键单击“属性”将打开对话框,其中配置设置为活动配置。

在 Visual Studio 2017 中,情况不再如此,并且似乎以最后编辑的配置打开,这令人困惑,并可能导致有人为错误的配置编辑设置,如上所示。不好改...

于 2019-09-30T23:19:54.913 回答