Я изучаю возможность запрограммировать защитный ключ на Windows CE7. Компания, производящая ключ, прямо не заявляет, что поддерживается Windows CE, но, по словам их продавца, Windows CE6 должен поддерживаться. Ключ использует библиотеку импорта (.lib), которая ссылается на .dll, в которой есть функции, которые я хочу использовать. Глядя на информацию заголовка .dll с dumpbin /headers
, я вижу, что .dll была скомпилирована для x86 (14 c) и что это подсистема Windows GUI
. Для справки, библиотеки .dll, которые я использую на устройстве Windows CE, скомпилированы для Thumb (1c2, ARM afaik) и имеют подсистему Windows CE GUI
.
Вот сокращенный вывод команды dumpbin.
Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file <name removed>.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
14C machine (x86)
5 number of sections
502875ED time date stamp Mon Aug 13 12:35:09 2012
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
210E characteristics
Executable
Line numbers stripped
Symbols stripped
32 bit word machine
DLL
OPTIONAL HEADER VALUES
10B magic # (PE32)
6.00 linker version
A000 size of code
C000 size of initialized data
0 size of uninitialized data
4EA2 entry point (10004EA2)
1000 base of code
B000 base of data
10000000 image base (10000000 to 10016FFF)
1000 section alignment
1000 file alignment
4.00 operating system version
0.00 image version
4.00 subsystem version
0 Win32 version
17000 size of image
1000 size of headers
1A38F checksum
2 subsystem (Windows GUI)
0 DLL characteristics
100000 size of stack reserve
1000 size of stack commit
100000 size of heap reserve
1000 size of heap commit
0 loader flags
10 number of directories
BED0 [ D9] RVA [size] of Export Directory
B770 [ 50] RVA [size] of Import Directory
14000 [ 7C8] RVA [size] of Resource Directory
0 [ 0] RVA [size] of Exception Directory
12000 [ 17D0] RVA [size] of Certificates Directory
15000 [ 990] RVA [size] of Base Relocation Directory
0 [ 0] RVA [size] of Debug Directory
0 [ 0] RVA [size] of Architecture Directory
0 [ 0] RVA [size] of Global Pointer Directory
0 [ 0] RVA [size] of Thread Storage Directory
0 [ 0] RVA [size] of Load Configuration Directory
0 [ 0] RVA [size] of Bound Import Directory
B000 [ 144] RVA [size] of Import Address Table Directory
0 [ 0] RVA [size] of Delay Import Directory
0 [ 0] RVA [size] of COM Descriptor Directory
0 [ 0] RVA [size] of Reserved Directory
Я впервые анализирую такие библиотеки DLL и библиотеки, поэтому я не слишком хорошо с ними знаком.
- Если dll была скомпилирована для x86, то она может использоваться только на машинах x86 и ни на каких других архитектурах. Это имеет смысл , но, учитывая, что dll использует формат PE (ПОРТАТИВНЫЙ исполняемый файл), не должна ли быть хоть какая-то совместимость между разными архитектурами? Возможно, я неправильно понимаю его «переносимую» часть.
- Если вышесказанное верно, есть ли шанс заставить dll работать на Windows CE, кроме как попросить поставщика перекомпилировать dll для Windows CE?