什么可能导致“未解析的外部符号IID_ICallbackWithNoReentrancyToApplicationSTA”错误?

问题描述 投票:1回答:1

只是谷歌搜索或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(),但结果是一样的。

c++-winrt ppl
1个回答
4
投票

使用Project> Properties> Linker> Input>“Additional Dependencies”设置,添加uuid.lib

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

© www.soinside.com 2019 - 2024. All rights reserved.