【发布时间】:2020-05-26 03:43:40
【问题描述】:
我正在为 UWP 使用 C++/WinRT。我正在尝试创建一个文件,但在第 11 行抛出异常:
#include "pch.h"
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Storage;
IAsyncAction createFile()
{
try
{
StorageFolder local{ ApplicationData::Current().LocalFolder() }; // line 11
StorageFolder folder = co_await local.CreateFolderAsync(L"myapp", CreationCollisionOption::OpenIfExists);
StorageFile file = co_await folder.CreateFileAsync(L"file", CreationCollisionOption::ReplaceExisting);
co_await FileIO::WriteTextAsync(file, L"wide chars here.");
}
catch (const winrt::hresult_error& ex)
{
}
}
int main()
{
init_apartment();
createFile();
}
调试器没有向我显示错误,因为它崩溃了。输出显示
onecoreuap\base\appmodel\statemanager\winrt\lib\windows.storage.applicationdatafactory.server.cpp(126)\Windows.Storage.ApplicationData.dll!00007FFE8A7A1202: (caller: 00007FFE8A799081) ReturnHr(1) tid(3ad8) 80073D54 The process has no package identity.
onecoreuap\base\appmodel\statemanager\winrt\lib\windows.storage.applicationdatafactory.server.cpp(74)\Windows.Storage.ApplicationData.dll!00007FFE8A7990A9: (caller: 00007FF733954323) ReturnHr(2) tid(3ad8) 80073D54 The process has no package identity.
Debug Error!
Program: D:\Developpement\CPP\test\x64\Debug\Tests.exe
abort() has been called
我在谷歌上一无所获,那么这个错误是什么意思,我该如何解决?谢谢
【问题讨论】:
-
在
maincreateFile中你不需要wait吗? -
我认为 main 中的调用应该是
createFile.get();到wait才能完成调用 -
嗯,不是这样,
.get()也会出现错误 -
这是一个错误,所以修复它。错误消息非常直接:您的应用程序没有包 ID。要么让它成为一个 UWP 应用程序,要么提供一个应用程序清单(虽然没有尝试过)。
-
现在看起来很合乎逻辑......我怎样才能使它成为一个 UWP 应用程序,或者将清单链接到它?