Helpers - компьютеры, интернет, программирование

Как перенести Windows Embedded Compact 7 DLL на Windows CE 5.0/6.0?

Я хотел бы перенести DLL, скомпилированную для Windows Embedded Compact 7, в среду Windows CE 5.0/6.0. Я совершенно уверен, что целевой язык ассемблера совместим, но из моих экспериментов выяснилось, что в DLL в WEC 7 есть что-то фундаментальное, чем в WCE 5. Кто-нибудь знает, что конкретно отличается от того, как DLL компилируются в WEC 7? чем в WCE 5/6?


  • Кстати, это неуправляемая C++ DLL (не .NET). 06.02.2018
  • Также программа работает под WCE 5, но зависает без сообщения об ошибке. Если бы это была проблема с искажением имени или зависимостями, я бы ожидал, что DLL или программа даже не загрузятся, как это было до того, как у меня были правильные зависимости. 06.02.2018

Ответы:


1

Я предполагаю, что исходный код для этой dll недоступен, что может затруднить ее использование в более ранних версиях Windows CE.

В более новых версиях CE в библиотеку CRT добавлены функции безопасности, поэтому, если dll зависит от какой-либо из них, она не будет работать в более ранних версиях.

Помимо целевой архитектуры, образы ОС также должны быть созданы с использованием аналогичного набора функций OS/SYSGEN, иначе, опять же, dll может не загрузиться или не запуститься, если эти зависимости не будут удовлетворены.

dll может пытаться динамически загружать другие dll или полагаться на поведение ОС, специфичное для CE 7.0.

Короче говоря, потенциально очень сложная задача без исходного кода.

Для начала можно использовать инструмент Microsoft dumpbin с параметром /imports для создания списка dll и точек входа, от которых зависит dll. Точно так же используйте dumpbin /exports в более ранних сборках Windows CE, на которых вы хотите использовать dll, чтобы увидеть, какие точки входа доступны, и работать с ними.

Другой подход, если у вас есть доступ к Platform Builder и вы можете самостоятельно создавать образы ОС, заключается в использовании отладчика ядра для проверки того, что происходит при загрузке dll.

09.02.2018
  • Спасибо Карстен! Я попробую некоторые из этих идей и дам всем знать, насколько хорошо это получилось. 12.02.2018
  • Я использовал утилиту dumpbin/import для поиска зависимостей. Зависимости были теми же, которые я установил, наблюдая за выводом сборки из Platform Builder 5.0. Я уверен, что зависимости присутствуют. На самом деле я знаю, что одна из зависимостей (путем сопоставления порядкового номера из crt_ordinals.h) — это __security_gen_cookie2, функция, которой нет в WCE 5. Но я взял функцию из WEC7 и добавил ее в coredll.dll и перекомпилировал coredll.dll, так что теперь эта функция присутствует в WCE 5. Но даже при разрешении всех зависимостей она зависает. Далее я могу попробовать KITL. 22.02.2018
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..