Я сталкиваюсь с очень странной проблемой, пытаясь скомпилировать и использовать компонент среды выполнения Windows в приложении UWP (сообщество VS2017 15.9.13 с NetCore.UniversalWindowsPlatform 6.2.8, скомпилированное без / clr, но с /ZW).
Это в основном что-то вроде Оттенки серого . Компонент времени выполнения фактически работает, как и ожидалось, теперь я хотел удалить неиспользуемый код. Однако, как только я удаляю его из определенного файла и перекомпилирую, он действительно компилирует ссылки, но DLL больше не загружается.
Вот пример кода, который я должен вставить:
ref class DummyU sealed
{
public:
DummyU() {}
};
DummyU^ CreateDummyU()
{
return ref new DummyU();
}
Код только заставляет его работать, хотя на него а) вообще не ссылаются и б) ничего полезного не делает.
Результат удаления:
Exception thrown at 0x0EFF322F (vccorlib140d_app.dll) in TestAppUWP.exe: 0xC0000005: Access violation reading location 0x00000000.
в
STDAPI DllGetActivationFactory(_In_ HSTRING activatibleClassId, _Deref_out_ IActivationFactory** ppFactory)
{
return Platform::Details::GetActivationFactory(Microsoft::WRL::Details::ModuleBase::module_, activatibleClassId, ppFactory);
}
функция в dllexports.cpp
, которая является частью VS. module_
становится NULL
.
У кого-нибудь есть идея, если есть какие-либо известные ошибки, связанные с тем, что среда выполнения Windows не инициализируется / не используется должным образом, если в файле нет явного создания экземпляра класса ref?
РЕДАКТИРОВАТЬ 1:
Вот ссылка на полный исходный код: