Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+的问题+;Windows上的命令行参数 我在C++中有一些问题在Windows上解析命令行参数。 我试过用这个 int main(int argc, char **argv) { std::cout << "Command-line argument count: " << argc << " \n"; std::cout << "Arguments:\n"; for (int i = 0; i < argc; i++) std::cout << " argv[" << i << "] " << argv[i] << "\n"; return 0; }_C++_Windows_Command Line Arguments_Msvc12 - Fatal编程技术网

C+的问题+;Windows上的命令行参数 我在C++中有一些问题在Windows上解析命令行参数。 我试过用这个 int main(int argc, char **argv) { std::cout << "Command-line argument count: " << argc << " \n"; std::cout << "Arguments:\n"; for (int i = 0; i < argc; i++) std::cout << " argv[" << i << "] " << argv[i] << "\n"; return 0; }

C+的问题+;Windows上的命令行参数 我在C++中有一些问题在Windows上解析命令行参数。 我试过用这个 int main(int argc, char **argv) { std::cout << "Command-line argument count: " << argc << " \n"; std::cout << "Arguments:\n"; for (int i = 0; i < argc; i++) std::cout << " argv[" << i << "] " << argv[i] << "\n"; return 0; },c++,windows,command-line-arguments,msvc12,C++,Windows,Command Line Arguments,Msvc12,(追尾) 我使用MSVC12使用/SUBSYSTEM:CONSOLE链接器选项编译了它。 这个问题的原因是什么?我在VS 2012上试过你的项目,它运行得很顺利。 我添加了一个getchar();命令如下: #include <iostream> int main(int argc, char *argv[]) { std::cout << "Command-line argument count: " << argc << " \n";

(追尾)

我使用MSVC12使用
/SUBSYSTEM:CONSOLE
链接器选项编译了它。
这个问题的原因是什么?

我在VS 2012上试过你的项目,它运行得很顺利。 我添加了一个getchar();命令如下:

#include <iostream>

int main(int argc, char *argv[])
{
    std::cout << "Command-line argument count: " << argc << " \n";
    std::cout << "Arguments:\n";
    for (int i = 0; i < argc; i++)
        std::cout << "  argv[" << i << "]   "
        << argv[i] << "\n";
    getchar();
    return 0;
}
#包括
int main(int argc,char*argv[])
{

std::cout在projectproperties->General中检查角色集是值得的。

显然,IDE或项目或系统上的其他设置有问题。 代码是完美的

您是否尝试过通过命令提示符直接独立地运行输出exe

通过提供一些任意参数,在命令提示符下运行exe,并检查输出

我已手动将入口点设置为
main
。无论我是否使用默认项目设置(
\u tmain
),问题仍然存在

通常,除非您知道后果,否则不应这样做。的典型值应为:

  • [w]mainCRTStartup
    ,调用
    [w]main
    ,或
  • [w]WinMainCRTStartup
    ,调用
    [w]WinMain
    ,或
  • \u DllMainCRTStartup
    ,它调用
    DllMain
为什么需要这样做?嗯,
…CRTStartup
-函数系列,包括以下函数的初始化:

  • C运行时(CRT)
  • 任何全局变量,以及
  • 参数
    argc
    argv
    ,正如您意外发现的那样
因此,对于一个典型的程序,您可能希望它完成它的工作。在Linux世界中,有一个名为
\u start
的等效函数,它也需要执行相同的初始化任务,链接时可以用
-e
覆盖该函数

这里的混淆可能源于“入口点”一词的歧义含义的不同:从语言(即
main
及其同类)的角度来看,存在“明显入口点”的含义,从语言实现的角度来看,存在“真正入口点”的含义(即
…CRTStartup
\u start

请注意,使用
…CRTStartup
函数并不是绝对必要的,因为您当然可以编写一个避免使用它们的程序。但是,这会带来成本:

  • 不能使用C运行时,因此不能使用大多数标准库
  • 您需要手动初始化任何全局变量,并且
  • 您需要使用Windows API手动获取
    argc
    argv
    GetCommandLineW
    CommandLineToArgvW

有些人这样做是为了避免对CRT的依赖,或者最小化可执行文件的大小。

我创建了一个新项目,以检查它是否是由某些项目设置引起的,但我仍然无法使其工作。在VS 2013中也可以正常工作。检查是否有其他干扰,如病毒扫描程序。我没有运行任何类似病毒扫描程序的程序在我的开发机器上运行。不应该有任何干扰。无论我将其设置为Unicode还是多字节,在这两种情况下,问题仍然存在。你总是得到完全相同的垃圾数据吗?你能检查一下是否将
\u mainCRTStartup
设置为入口点吗?你使用的是什么版本的CRT?没有g代码错误。请检查项目设置。@codefox等一下,您是说您手动将入口点设置为
main
?这不起作用,入口点必须是CRT入口点
mainCRTStartup
,如上所述(好吧,除非在链接器选项中指定了它,但据我所知没有前导下划线)。查看详细信息。@codefox这适用于所有应用程序。需要一些代码来解析操作系统给出的命令行,并生成标准声明
main
所需的参数。更不用说调用
main
之前需要发生的所有其他事情。@codefoxode>/SUBSYSTEM:CONSOLE
/SUBSYSTEM:WINDOWS
是指当指定前者时,默认入口点为
mainCRTStartup
,因此不需要显式地将其提供给链接器。我尝试了这两种方法,从IDE和命令提示符运行。结果是相同的。尽管其他的一切都运行正常…很奇怪…我想知道问题可能是什么…但是,作为一个瞎猜,我建议尝试另一个编译器,例如MinGW…Gud luckThanks,以获得详细的解释!将来,我一定会记住这一点。这个问题真的让我发疯,但现在一切都正常。除非坏了!
Z:\Dev\ProcessSuspender\Debug>ProcessSuspender a
Command-line argument count: 2130558976
Arguments:
  argv[0]
  argv[1]   ╠ÉÉÉÉÉj↑h╚♂YwÞØ÷■ âe³
  argv[2]
#include <iostream>

int main(int argc, char *argv[])
{
    std::cout << "Command-line argument count: " << argc << " \n";
    std::cout << "Arguments:\n";
    for (int i = 0; i < argc; i++)
        std::cout << "  argv[" << i << "]   "
        << argv[i] << "\n";
    getchar();
    return 0;
}
Command-line argument count: 2
Arguments:
  argv[0]   <my macines path>\helpingStack1.exe
  argv[1]   a