A drop-in cross-development bundle for Windows CE 3.0 through Windows CE 7.0. Builds CE PE binaries for ARM, MIPS, and SH targets on a modern Windows host without installing eMbedded Visual C++, Platform Builder, or Visual Studio.
.
├── bin/I386/ host x86 build tools
│ ├── ARM/ cl.exe armasm.exe c1.dll c1xx.dll c2.dll
│ ├── MIPS/ SH/ cl.exe for the other ISAs
│ ├── link.exe lib.exe universal linker / librarian
│ └── rc.exe nmake.exe dumpbin.exe editbin.exe ...
│
├── ce3-ppc2k/ Pocket PC 2000 SDK (CE 3.0)
├── ce3-hpc2k/ H/PC 2000 SDK (CE 3.0)
├── ce42-standard/ Standard CE .NET 4.2 SDK (CE 4.2)
├── ce42-smartphone/ Smartphone 2003 SDK (CE 4.2)
├── ce5-standard/ Standard SDK for Windows CE 5 (CE 5.0)
│
├── ce3-oak/ ce3-ddk/ Driver-mode headers (CE 3.0)
├── ce5-oak/ ce5-ddk/ Driver-mode headers (CE 5.0)
├── ce6-oak/ ce6-ddk/ Driver-mode headers (CE 6.0)
└── ce7-oak/ ce7-ddk/ Driver-mode headers (CE 7.0)
$SDK = "C:\path\to\WindowsCE-Build-Tools"
$env:PATH = "$SDK\bin\I386\ARM;$SDK\bin\I386;$env:PATH"
# compile
& "$SDK\bin\I386\ARM\cl.exe" /nologo /c /W3 /O2 `
/DUNICODE /D_UNICODE /DUNDER_CE /DARM /D_ARM_ `
/I "$SDK\ce5-standard\Include\Armv4i" main.c
# link
& "$SDK\bin\I386\link.exe" /nologo `
/subsystem:windowsce,5.00 /entry:WinMain /machine:THUMB /nodefaultlib `
/libpath:"$SDK\ce5-standard\Lib\ARMV4I" /out:app.exe `
main.obj coredll.lib commctrl.lib commdlg.libThe resulting app.exe is a Windows CE PE that runs on any ARM-based CE 5.0 /
Windows Mobile 5 device — Pocket PC, Smartphone, Handheld PC, or industrial
hardware. The same binary also runs on CE 6.0 and CE 7.0 because CE coredll
only ever added exports, never removed them.
The same cl.exe cross-compiles for every CE version — only the include / lib
paths and the PE subsystem stamp change:
| Target CE | Include path | Lib path | Subsystem |
|---|---|---|---|
| CE 3.0 (PPC2K) | ce3-ppc2k\include |
ce3-ppc2k\lib\arm\<soc>\CE\RETAIL |
windowsce,3.00 |
| CE 3.0 (H/PC) | ce3-hpc2k\include |
ce3-hpc2k\lib\arm\<soc>\CE\RETAIL |
windowsce,3.00 |
| CE 4.2 (Standard) | ce42-standard\Include\Armv4i |
ce42-standard\Lib\Armv4i |
windowsce,4.20 |
| CE 4.2 (Smartphone) | ce42-smartphone\Include\Armv4i |
ce42-smartphone\Lib\Armv4 |
windowsce,4.20 |
| CE 5.0 / 5.2 | ce5-standard\Include\Armv4i |
ce5-standard\Lib\ARMV4I |
windowsce,5.00 |
| CE 6.0 / 7.0 | ce5-standard\Include\Armv4i |
ce5-standard\Lib\ARMV4I |
windowsce,5.00 |
For CE 6 / CE 7 targets the CE 5 SDK include / lib paths work — coredll's
export set is forward-compatible. Stamp a higher /subsystem:windowsce,6.00
or ,7.00 if you want loader rejection on older devices.
For driver builds add the matching CE-version OAK and DDK include paths alongside the SDK include path:
& cl.exe /c /W3 /O2 /DUNICODE /D_UNICODE /DUNDER_CE /DARM /D_ARM_ `
/I "$SDK\ce5-standard\Include\Armv4i" `
/I "$SDK\ce5-oak\INC" `
/I "$SDK\ce5-ddk\INC" `
driver.cFor MIPS / SH targets the matching bin\I386\<arch>\cl.exe and the per-SDK
Include\<arch>\ / Lib\<arch>\ subdirs follow the same pattern. The shared
link.exe accepts all CE machine types — run link.exe /? for the full
/machine: token list.
Contents are a verbatim merge of Microsoft installs:
bin/—SDK\BIN\from Windows CE 5.0 Platform Builderce3-ppc2k/— Microsoft Pocket PC 2000 SDKce3-hpc2k/— Microsoft Handheld PC 2000 SDKce42-standard/— Standard SDK for Windows CE .NET 4.2ce42-smartphone/— Smartphone 2003 SDKce5-standard/— Standard SDK for Windows CE 5.0ce3-oak/,ce3-ddk/— header subtrees from Windows CE 3.0 Platform Builderce5-oak/,ce5-ddk/— header subtrees from Windows CE 5.0 Platform Builderce6-oak/,ce6-ddk/— header subtrees from Windows CE 6.0 Platform Builderce7-oak/,ce7-ddk/— header subtrees from Windows CE 7.0 Platform Builder
All binaries, headers, and libraries in this repository are Microsoft's
intellectual property, redistributed verbatim. The Microsoft EULAs preserved
inside each ce*-* subdirectory govern use and redistribution. No additional
license is granted by this repository beyond what Microsoft's EULAs permit.
- gweslab/cerf — universal Windows CE ARM emulator