什么可能导致 "unresolved external symbol IID_ICallbackWithNoReentrancyToApplicationSTA" 错误?

What could be causing an "unresolved external symbol IID_ICallbackWithNoReentrancyToApplicationSTA" error?

只是谷歌搜索或 duckduckgo'ing

unresolved external symbol IID_ICallbackWithNoReentrancyToApplicationSTA

只提出一个直接命中,甚至不能帮助报告问题的人,所以我希望一些 C++/WinRT 人 运行 解决这个问题。

虽然我不能分享所有的源代码(大量交织在一起的专有文件),但我可以分享场景和代码更改的细目;此外,几乎没有任何地方提到 IID_ICallbackWithNoReentrancyToApplicationSTA 。巧合的是,它 appears on GitHub for some Kenny Kerr 东西。我遇到问题的项目是一个 C++/WinRT 项目,所以这似乎是一个相关的陷阱,特别是因为提到 xlang 应该是 C++/WinRT 的抽象。

场景:单核 UAP C++/WinRT application/service 正在使用 C++/WinRT 库。在构建 app/service.

时尝试使用库创建的库时构建中断

代码更改:我在库中实现了一些 PPL 任务,特别是一些 concurrency::task<void> 在 C++ 中使用的新线程上执行一些 I/O /WinRT lib 正在被 app/service 使用。它是一个 std::thread,它使用 lambda 获取对象的副本并执行 I/O。像这样:

std::thread writer([content_vector, json_string, content_file_name, json_file_name]() {
        auto write_content = Helper_IO::Overwrite_Lines_Concurrent(content_file_name, content_vector);
        auto write_json = Helper_IO::Overwrite_File_Concurrent(json_file_name, json_string);
        write_content.get();
        write_json.get();
    });

Helper_IO::Overwrite_*_Concurrent 都是静态的并且都是 return 和 concurrency::task<void>

我试过使用 writer.detach()writer.join(),但结果是一样的。

使用项目 > 属性 > 链接器 > 输入 > "Additional Dependencies" 设置,添加 uuid.lib.

一些背景,名称以"IID"开头的标识符是{guids}。数据,而不是代码。 MSDN 文档通常不足以告诉您需要什么库 link,过于专注于记录功能。我最喜欢的技术是使用类似 grep 的工具(我使用 Far 文件管理器,推荐有点模糊)并在 SDK 的 lib 目录中搜索字符串。