【问题标题】:Create a Minimal Hello World UWP app创建一个最小的 Hello World UWP 应用
【发布时间】:2017-06-20 09:50:06
【问题描述】:

我正在使用 Visual Studio 2017 创建一个简单的 C++/Cx 通用 Windows 平台应用程序。我需要从头开始,没有任何花哨的东西。

当我创建一个新的“空白”项目时,我最终得到了 2 个 XAML 文件(每个文件都链接了一个 .cpp 和一个 .h 文件)和一个充满生成代码的目录。其中一些文件甚至是在第一次编译后生成的。这不适合我的情况,我希望有一个 main() 函数,其代码最少,可以运行 Hello World 应用程序,没有自动生成的代码。

在其中一个生成的文件 (App.g.hpp) 中,我找到了 main() 方法,但我没有找到在非生成文件中编写自己的方法:

int __cdecl main(::Platform::Array<::Platform::String^>^ args)
{
    (void)args; // Unused parameter
    ::Windows::UI::Xaml::Application::Start(ref new ::Windows::UI::Xaml::ApplicationInitializationCallback(
        [](::Windows::UI::Xaml::ApplicationInitializationCallbackParams^ p) {
            (void)p; // Unused parameter
            auto app = ref new ::MinimalUWP::App();
        }));
}

是否有模板可用于创建 true 空白 UWP 项目?

【问题讨论】:

  • 什么编程语言?问题标记为c++,代码使用c++-cx。
  • C++/Cx,已更正
  • 如果您需要准系统 UWP 应用程序,请不要使用项目向导来创建。这要求你知道,你在做什么。使用 C++/WinRT 可能更容易。见C++ - Introducing C++/WinRT。
  • 我也试过不使用向导,它工作正常。问题是在执行结束时出现一个错误,说我的“应用程序未激活”
  • 你专注于你的终极目标,你遇到的每一个问题对你来说都是同一个问题。它不是。到目前为止,您已经陈述了 2 个不同 问题:1 创建 UWP 应用程序会产生过多的自动生成代码。 2 运行准系统 UWP 应用程序会出现运行时错误。这些是不同的问题。如果您不想要自动生成的代码,请不要使用 C++/CX。您可以将 C++ 与 WRL 或 C++/WinRT 结合使用。除此之外,还必须部署和注册 UWP 应用程序(并且系统准备好进行旁加载)。

标签: uwp visual-studio-2017 c++-cx


【解决方案1】:

我终于用这段代码自己解决了:

ref class UwpApp : public ::Windows::UI::Xaml::Application
{
protected:
   virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) override
   {
      // Use e->Arguments as main arguments
   }
};

int __cdecl main(::Platform::Array<::Platform::String^>^ args)
{
   ::Windows::UI::Xaml::Application::Start(ref new ::Windows::UI::Xaml::ApplicationInitializationCallback(
      [](::Windows::UI::Xaml::ApplicationInitializationCallbackParams^ p) {
      auto app = ref new UwpApp();
   }));
}

感谢@IInspectable,最后我坚持使用 C++/CX,它成功了!

【讨论】:

  • 请注意,目前不支持控制台输出。您可以致电OutputDebugString("Hello, world"),但它永远不会显示给普通用户。你申请的最终目的是什么?
猜你喜欢
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多