Просто googling или duckduckgo'ing
неразрешенный внешний символ IID_ICallbackWithNoReentrancyToApplicationSTA
вызывает только один прямой удар, и это даже не помогает человеку, сообщающемупроблема, поэтому я надеюсь, что некоторые C ++ / WinRT люди сталкиваются с этим вопросом.
Хотя я не могу поделиться всем источником (тоннами переплетенных проприетарных файлов), я могу поделиться сценарием и разбивкой того, чтоизменения кода были;кроме того, очень мало упоминаний о IID_ICallbackWithNoReentrancyToApplicationSTA
в любом месте.По совпадению, это появляется на GitHub для некоторых Кенни Керр вещей.Проект, с которым у меня проблемы, - это проект C ++ / WinRT, так что это похоже на уловку, тем более что есть упоминания xlang
, который, как предполагается, является абстракцией C ++ / WinRT.
Сценарий : Библиотека C ++ / WinRT используется приложением / службой One Core UAP C ++ / WinRT.Сборка прерывается при попытке использовать библиотеку, созданную библиотекой, при создании приложения / службы.
Изменения кода : я реализовал некоторые задачи PPL в библиотеке, в частности некоторые concurrency::task<void>
, которыевыполните некоторые операции ввода-вывода в новом потоке, используемом в C ++ / WinRT lib, который используется приложением / службой.Это std :: thread, который использует лямбду, которая берет копии объектов и выполняет ввод / вывод.Примерно так:
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()
, но результатыто же самое.