c++-winrt - 什么可能导致“无法解析的外部符号 IID_ICallbackWithNoReentrancyToApplicationSTA”错误?
问题描述
只是谷歌搜索或duckduckgo'ing
未解析的外部符号
IID_ICallbackWithNoReentrancyToApplicationSTA
只带来一个直接命中,甚至对报告问题的人没有帮助,所以我希望一些 C++/WinRT 人遇到这个问题。
虽然我无法分享所有源代码(大量交织的专有文件),但我可以分享场景和代码更改的细分;此外,很少提及IID_ICallbackWithNoReentrancyToApplicationSTA
任何地方。巧合的是,它在 GitHub 上出现了一些Kenny Kerr的东西。我遇到问题的项目是 C++/WinRT 项目,所以这似乎是一个相关的陷阱,特别是因为有人提到xlang
它应该是 C++/WinRT 的抽象。
场景:一个 C++/WinRT 库正在被 One Core UAP C++/WinRT 应用程序/服务使用。在构建应用程序/服务时尝试使用库创建的库时构建中断。
代码更改:我在库中实现了一些 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()
and writer.join()
,但结果是一样的。
解决方案
使用 Project > Properties > Linker > Input > "Additional Dependencies" 设置,添加uuid.lib
.
一些背景,名称以“IID”开头的标识符是{guids}。数据,而不是代码。MSDN 文档通常不足以告诉您需要链接什么库,过于专注于记录功能。我最喜欢的技术是使用类似 grep 的工具(我使用 Far 文件管理器,推荐使用有点晦涩)并在 SDK 的 lib 目录中搜索字符串。
推荐阅读
- android - 您的设备与此版本不兼容
- python - Python - 有效计算两个矩阵中每对行之间的曼哈顿距离
- android - Android - 纵向模式下的 Google 示例 HdrViewFinder
- c# - 如果注册,TFS 是否允许超过 5 个用户使用?
- python - Many time series in the same table: how to generate JSON string in correct format
- javascript - 如何使用客户端javascript访问节点服务器发送的数据
- angular - 角度 ngmodule 的加载配置
- javascript - Decimal.js 乘法方法不能正常工作
- rust - 使用 actix-web 调用 async reqwest
- javascript - Microsoft Graph API 特别是活动目录 OU