StorageFolder メソッド GetFilesAsync を cppwinrt に変換しようとしていますが、過去のコンパイラ リンク エラーを取得できません。概念をテストするための非常に単純なルーチンを次に示します。
#include "winrt/Windows.Storage.h"
#include "winrt/Windows.Foundation.Collections.h"
IAsyncAction TestClass::LoadFiles()
{
StorageFolder appFolder = Windows::ApplicationModel::Package::Current().InstalledLocation();
StorageFolder assetsFolder = co_await appFolder.GetFolderAsync(hstring(L"Assets"));
auto files = co_await assetsFolder.GetFilesAsync(CommonFileQuery::DefaultQuery);
}
問題は、GetFilesAsync の戻り値の型にあるようです。そのために IVectorView などのさまざまなタイプを試しましたが、何も機能しないようです。この列挙が C++/winrt でどのように達成されるかを示すコード例を知っている人はいますか?
[更新] SDK 10.0.17666 および VS 15.9.0 Preview 3 を使用してこのプロジェクトに戻ると、これらの回答から以前に採用されたソリューションが機能しなくなっていることがわかりました。今回は、誰かがアイデアを持っているかどうかを確認するために、必ず完全なエラーを含めます。簡単にするために、IInspectable が提供する単純なコードを使用し、ResourceManager クラスのクラス メンバーにするためだけに変更します。
#include "winrt/Windows.ApplicationModel.h"
#include "winrt/Windows.Storage.h"
#include "winrt/Windows.Storage.Streams.h"
#include "winrt/Windows.Foundation.Collections.h"
#include "winrt/Windows.Storage.Search.h"
#include "winrt/Windows.UI.Core.h"
#include "pch.h"
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Storage;
using namespace Windows::Storage::Search;
IAsyncAction ResourceManager::LoadActivities()
{
StorageFolder appFolder = Windows::ApplicationModel::Package::Current().InstalledLocation();
StorageFolder assetsFolder = co_await appFolder.GetFolderAsync(L"Activities");
auto files = co_await assetsFolder.GetFilesAsync(CommonFileQuery::DefaultQuery);
}
GetFilesAsync を呼び出すと、次のリンク エラーが生成されるようになりました: 重大度コード 説明 Project File Line Suppression State Error LNK2019 unresolved external symbol "public: struct winrt::Windows::Foundation::IAsyncOperation > __thiscall winrt::impl::consume_Windows_Storage_Search_IStorageFolderQueryOperations::GetFilesAsync (enum winrt::Windows::Storage::Search::CommonFileQuery const &)const " (?GetFilesAsync@?$consume_Windows_Storage_Search_IStorageFolderQueryOperations@UStorageFolder@Storage@Windows@winrt@@@impl@winrt@@QBE?AU?$IAsyncOperation@ U?$IVectorView@UStorageFile@Storage@Windows@winrt@@@Collections@Foundation@Windows@winrt@@@Foundation@Windows@3@ABW4CommonFileQuery@Search@Storage@63@@Z) 関数で参照される "public: struct winrt ::Windows::Foundation::IAsyncAction __thiscall AppEngine::ResourceManager::LoadActivities$_ResumeCoro$2(void)" (?LoadActivities$_ResumeCoro$2@ResourceManager@AppEngine@@QAE?AUIAsyncAction@Foundation@Windows@winrt@@XZ)
(オブジェクトファイルへのパスが続きます)
そのエラーメッセージを解読するのは難しいと認めざるを得ません。おそらく、ここにいる他の誰かがアイデアを持っているでしょうか?最近のシステム更新で変更されたものでなければなりません。