对于C ++ / WinRT控制台UWP应用,AppxManifest.xml中的EntryPoint是什么?

时间:2018-12-06 20:14:52

标签: uwp c++-winrt

This关于命令行UWP应用的博客文章说:“可执行文件是您的UWA应用EXE的名称,而EntryPoint是您的App类的完全限定名称。”

这对C#应用程序有意义,但是C++/WinRT console UWP app template又如何呢?我们唯一的代码是:

int main()
{
    // You can get parsed command-line arguments from the CRT globals.
    wprintf(L"Parsed command-line arguments:\n");
    for (int i = 0; i < __argc; i++)
    {
        wprintf(L"__argv[%d] = %S\n", i, __argv[i]);
    }

    wprintf(L"Press Enter to continue:");
    getchar();
}

最主要的话说:

...
<Application Id="App"
  Executable="$targetnametoken$.exe"
  EntryPoint="UWPConsoleApp.App"
...

我将项目称为UWPConsoleApp,这就是VS设置的入口点,但是此类在哪里?编译器会生成它吗,是一些由宏控制的晦涩的vcruntime初始化代码还是完全不同的东西?

1 个答案:

答案 0 :(得分:4)

这些清单值基本上在这里未使用,因此不必担心。 C ++ / CX与C ++ / WinRT的Package.appxmanifest没有什么区别。

启动差异在于您的代码入口点:

// C++/CX
[Platform::MTAThread]
int __cdecl main(Platform::Array<Platform::String^>^ /*argv*/)
{
    auto viewProviderFactory = ref new ViewProviderFactory();
    CoreApplication::Run(viewProviderFactory);
    return 0;
}

vs。

// C++/WinRT
int WINAPI wWinMain(
    _In_ HINSTANCE /*hInstance*/,
    _In_ HINSTANCE /*hPrevInstance*/,
    _In_ LPWSTR    /*lpCmdLine*/,
    _In_ int       /*nCmdShow*/
)
{
    ViewProviderFactory viewProviderFactory;
    CoreApplication::Run(viewProviderFactory);
    return 0;
}