【问题标题】:C++ app missing winrt::Windows::Storage::Streams::DataWriterC++ 应用程序缺少 winrt::Windows::Storage::Streams::DataWriter
【发布时间】:2018-12-06 00:20:23
【问题描述】:

一直在寻找如何链接引用DataWriter的小程序

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

我的 cpp 文件顶部有这两个库,在我开始使用 DataWriter 之前,它可以链接所有内容。

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

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

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

在发布到这里之前,我先尝试搜索(使用 dumpbin)我系统上的所有库。

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

编辑:添加了实际的链接器错误:

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 创建 Buffer,那也很好。

【问题讨论】:

  • 您遇到的链接器错误是什么?
  • @Sunius 将它们添加到正文中
  • 您使用的是哪个 Windows SDK?这些函数在我机器上的“C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\cppwinrt\winrt\Windows.Storage.Streams.h”中定义。我想知道您的某些标题是否已损坏或损坏。它们是内联的,因此您绝对不需要链接任何库。

标签: c++ windows-runtime


【解决方案1】:

您需要的唯一库是“windowsapp.lib”,尽管其他库可以用于桌面/控制台应用程序。当您收到这样的链接器错误时,这意味着您未能包含提供缺失定义的必要标头。尝试包含“winrt/Windows.Storage.Streams.h”。

Here's more info from the FAQ.

【讨论】:

  • windowsapp.lib 没有帮助,但包含修复了它,谢谢!没有意识到链接器指令和对象定义有单独的包含。
  • @Erik Aronesty 我认为这应该被标记为答案,我在使用许多不同的功能时遇到了同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多