只是谷歌搜索或duckduckgoing
未解决的外部符号
IID_ICallbackWithNoReentrancyToApplicationSTA
只提出一个直接命中,甚至没有帮助报告问题的人,所以我希望一些C ++ / WinRT人员遇到这个问题。
虽然我无法共享所有来源(大量交织的专有文件),但我可以分享场景并分析代码更改的内容;此外,在任何地方都很少提及IID_ICallbackWithNoReentrancyToApplicationSTA
。巧合的是,它为一些appears on GitHub的东西Kenny Kerr。我遇到问题的项目是一个C ++ / WinRT项目,所以这似乎是一个相关的陷阱,特别是因为有人提到xlang
应该是C ++ / WinRT的抽象。
场景:One Core UAP C ++ / WinRT应用程序/服务正在使用C ++ / WinRT库。在构建应用程序/服务时尝试使用库创建的lib时构建中断。
代码更改:我在库中实现了一些PPL任务,特别是一些concurrency::task<void>
,它们在应用程序/服务正在使用的C ++ / WinRT库中使用的新线程上执行一些I / O.它是一个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
都是静态的,都返回concurrency::task<void>
我尝试过使用writer.detach()
和writer.join()
,但结果是一样的。
使用Project> Properties> Linker> Input>“Additional Dependencies”设置,添加uuid.lib
。
一些背景,名称以“IID”开头的标识符是{guids}。数据,而不是代码。 MSDN文档通常不足以告诉您需要链接的库,过于专注于记录功能。我最喜欢的技术是使用类似grep的工具(我使用Far文件管理器,有点模糊推荐)并在SDK的lib目录中搜索字符串。