缺少 C++ 应用 winrt::Windows::Storage::Streams::DataWriter

C++ app missing winrt::Windows::Storage::Streams::DataWriter

一直在寻找如何link一个引用 DataWriter 的小程序

我的程序引用了其他对象(例如 winrt::Windows::Devices::Bluetooth class)。所以我知道它并没有完全坏掉。

我在我的 cpp 文件的顶部有这两个库,在我开始使用 DataWriter 之前,它得到了所有内容 link。

#pragma comment(lib, "oleaut32")
#pragma comment(lib, "runtimeobject")

它编译得很好,但我不知道要包含什么库。 MS 参考文档似乎没有提到您需要 link 使用它们的库:

https://docs.microsoft.com/en-us/uwp/api/windows.storage.streams.datawriter

我试着搜索(使用 dumpbin)我系统上的所有库,然后再发帖到这里。

auto writer = DataWriter();
writer.WriteString(L"HEREIAM");

编辑:添加了实际的 linker 错误:

error LNK2001: unresolved external symbol "public: __cdecl winrt::Windows::Storage::Streams::DataWriter::DataWriter(void)" (??0DataWriter@Streams@Storage@Windows@winrt@@QEAA@XZ)
error LNK2001: unresolved external symbol "public: unsigned int __cdecl winrt::impl::consume_Windows_Storage_Streams_IDataWriter<struct winrt::Windows::Storage::Streams::IDataWriter>::WriteString(struct winrt::param::hstring const &)const " (?WriteString@?$consume_Windows_Storage_Streams_IDataWriter@UIDataWriter@Streams@Storage@Windows@winrt@@@impl@winrt@@QEBAIAEBUhstring@param@3@@Z)

如果有其他方法可以使用 winrt 创建缓冲区,那也很好。

您唯一需要的库是 "windowsapp.lib",尽管其他库也适用于 desktop/console 应用程序。当您遇到这样的链接器错误时,这意味着您未能包含提供缺少定义的必要 header。尝试包括 "winrt/Windows.Storage.Streams.h".

Here's more info from the FAQ.