В моих постоянных попытках загрузить коллекцию файлов .svg в C ++ / winrt я столкнулся с загадочной ошибкой ссылки.Я хотел бы попробовать использовать CanvasSvgDocument.ReadAsync (resourceCreator, filestream).Чтобы добраться туда, сначала необходимо получить поток из StorageFile, и это, по-видимому, является способом сделать это (nextFile, StorageFile, уже загружен в этом примере).Это, конечно, внутри метода, определенного как IAsyncAction.Я перечислю #include и пространства имен в верхней части файла.
#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 "winrt/Windows.UI.Xaml.Media.h"
#include "pch.h"
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::Storage;
using namespace Windows::Storage::Provider;
using namespace Windows::Storage::Search;
using namespace Windows::Storage::Streams;
Вот проблемный вызов:
IRandomAccessStreamWithContentType fileStream = co_await nextFile.OpenReadAsync();
Это приводит к ошибке ссылки, которую я добавлюниже.Не имеет значения, пытаюсь ли я использовать полное имя результата fileStream:
winrt :: Windows :: Storage :: Streams :: IRandomAccessStreamWithContentType fileStream = co_await nextFile.OpenReadAsync ();
в любом случае я получаю эту ссылку:
Ошибка LNK2019: неразрешенный внешний символ "public: struct winrt :: Windows :: Foundation :: IAsyncOperation __thiscall winrt :: impl :: потребление_Windows_Storage_Streams_IRandomAccessStreamReference :: OpenReadAsync(void) const "(? OpenReadAsync @? $ потребление_Windows_Storage_Streams_IRandomAccessStreamReference @ UIStorageFile @ Storage @ Windows @ winrt @@@ impl @ winrt @@ QBE? AU? $ IAsyncOperation @ UIRandomAccessStreamWithConsttt@ 3 @ XZ) ссылка на функцию "public: struct winrt :: Windows :: Foundation :: IAsyncAction __thiscall AppEngine :: ResourceManager :: LoadSvgResources $ _ResumeCoro $ 2 (struct winrt :: Microsoft :: Graphics :: Canvas :: UI ::Xaml :: CanvasControl) "(? LoadSvgResources $ _ResumeCoro $ 2 @ ResourceManager @ AppEngine @@ QAE? AUIAsyncAction @ Foundation @ Windows @ winrt @@ UCanvasControl @ Xaml @ UI @ Canvas @ Graphics @ Microsoft @ 6 @@ Z) * 1014 *
Я также пытался использовать auto кактип результата, не повезло.Как правильно получить поток, используя OpenReadAsync () в C ++ / winrt?