Nano Hash - криптовалюты, майнинг, программирование

Сборка dll на основе ARM для использования в UWP/Windows 10. Не работает на мобильных устройствах. Все еще имеет зависимости от kernel32.lib

Я пытаюсь создать приложение UWP. Мне нужно включить в приложение ряд существующих (неуправляемый код) библиотек C++. Насколько я понимаю, лучший способ сделать это - обернуть все это в компонент среды выполнения Windows.

После некоторых трудностей мне удалось собрать приложение, связав его со всем существующим кодом C++ через компонент среды выполнения Windows. Некоторые из этих библиотек зависят от предварительно скомпилированных библиотек Win32 .dll. Поэтому я также перекомпилировал их из исходного кода с помощью Visual Studio 2015 для архитектуры ARM.

При развертывании на платформе Windows Mobile я получаю следующее исключение:

'System.IO.FileNotFoundException' in System.Private.Interop.dll; Unhandled exception at 0x77A3DF95 (combase.dll)

Это не очень помогает. Но на основе этого вопроса SO: i">System.IO.FileNotFoundException: не удалось загрузить файл или сборку "X" или одну из ее зависимостей при развертывании приложения, моя гипотеза заключается в том, что, несмотря на сборку DLL для ARM, одна из них все еще имеет зависимость куда-то в dll Win32, который, как и ожидалось, не может быть найден (отсюда FileNotFoundException).

Когда я загружаю каждую из DLL, созданных для ARM, в Dependency Walker, я не Я не вижу никаких зависимостей от Win32, за исключением одной из DLL, которую я создал для ARM из исходного кода, icuuc56.dll, которая, как я вижу, имеет kernel32 (advapi32) в качестве зависимости. Насколько я понимаю, Windows Mobile не будет предоставлять эти зависимости от ОС (отсюда FileNotFoundException?). И что динамическая загрузка этой конкретной зависимости Win32 вызывает сбой приложения.

Я хочу собрать версию icuuc56.dll для ARM без привязки к библиотекам Win32. По крайней мере, так я могу определить, какие части ICU4C полагаются на вызовы функций Win32. Но, как ни странно, при сборке для ARM я не могу запретить компоновщику связываться с %(AdditionalDependencies), который включает библиотеки Win32.

Я правильно интерпретировал проблему? Если да, то мои вопросы:

  1. Почему ICU4C в первую очередь нацелен на сборку ARM, если он зависит от DLL Win32?

  2. Как я могу предотвратить связывание с Kernel32 во время сборки, чтобы я мог определить, какие части ICU4C вызывают вызовы функций, которые не могут быть выполнены на ARM.

  3. Существует ли аналог ICU4C, предоставляемый ОС, который можно использовать вместо этого в UWP?

ОБНОВЛЕНИЕ: когда #ifdef WIN32 принимает значение true, platform.h ICU4C устанавливает следующее

#define     U_PLATFORM_USES_ONLY_WIN32_API   1
#define     U_PLATFORM_HAS_WIN32_API   1

Если я попытаюсь возиться с определениями препроцессора платформы, лучшее, что я могу получить, это использовать, например, tzset вместо _tzset. Которого тоже не будет (я полагаю).

Можно ли как-нибудь собрать ICU4C для UWP, не переписывая его полностью? В конце концов, его можно скомпилировать для iOS и Android. Я более подробно рассмотрю https://sourceforge.net/p/icu/mailman/icu-support/thread/[email protected]/, но это, похоже, немного другая проблема.



Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..