0

我有一个新的 main 函数,我要求链接器在 Visual Studio 中指向它。

我可以正确执行此功能。但是,我得到的命令行参数不正确。

目前这是我的签名

int NewMain(int argc, const char* argv[])
    {
    cout << "New Main" << endl;
    for (int i = 0; i < argc; ++i)
        {
        cout << argv[i] << "\n";
        }
    return 0;
    }

但是,当我使用与标准 main 相同的函数时,我得到了所有参数。

4

2 回答 2

4

当您指定链接器的入口点时,被调用的函数不会传递任何参数。它的签名是int entrypoint(void);

如果需要命令行,可以使用GetCommandLine. 如果你想把它解析成参数,你可以自己做,也可以使用CommandLineToArgvW-- 但请注意,这在宽字符版本中可用,所以如果你想要一个标准命令行(使用chars,而不是wchar_ts ) 你必须自己做。

于 2012-12-17T21:01:33.423 回答
3

来自 msdn 的社区插件:

带有命令行参数的自定义入口点函数
无法使用命令行参数指定自定义入口点,因为当您指定这样的入口点时,mainCRTStartup 不再被调用,因此不提供带有命令行参数的入口点,例如int argc 和 char* argv[]。

http://msdn.microsoft.com/en-us/library/f9t8842e%28v=vs.80%29.aspx

于 2012-12-17T20:59:48.703 回答