我有一个新的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相同的函数时,我得到了所有的参数。
答案 0 :(得分:4)
当您指定链接器的入口点时,被调用的函数不会传递任何参数。它的签名是int entrypoint(void);
如果您需要命令行,可以使用GetCommandLine
检索它。如果你想将它解析为参数,你可以自己这样做,或者使用CommandLineToArgvW
- 但请注意,这是仅在宽字符版本中可用,所以如果你想要一个标准的命令行(使用char
,而不是wchar_t
),你必须自己做。
答案 1 :(得分:3)
来自msdn的社区插件:
带命令行参数的自定义入口点函数
无法使用命令行参数指定自定义入口点,因为当您指定此类入口点时,不再调用mainCRTStartup,因此不提供带有命令行参数的入口点,例如int argc和char * argv []
http://msdn.microsoft.com/en-us/library/f9t8842e%28v=vs.80%29.aspx