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