Using Dependency Walker
- by Valter Minute
Dependency Walker is a very useful tool that can be used to find dependencies of a Portable Executable module. The PE format is used also on Windows CE and this means that Dependency Walker can be used to analyze also Windows CE/Windows Embedded Compact module. On Win32 it can be used also to monitor modules loaded by an application during runtime, this feature is not supported on CE.
You can download dependency walker for free here: http://dependencywalker.com/.
To analyze the dependencies of a Windows CE/Windows Embedded Compact 7 module you can just open it using Dependency Walker. If you want to check if a specific module can run on a Windows CE/Windows Compact 7 OS Image you can copy the executable in the same directory that contains your OS binaries (FLATRELEASEDIR). In this way Dependency Walker will highlight missing dlls or missing entry points inside existing dlls.
Let’s do a quick sample.
You need to check if myapp.exe (an application from a third party) can run on an image generated with your Test01 OSDesign.
Copy Myapp.exe to the flat release directory of your OS Design.
Launch depends.exe and use the File\Open option of its main menu to open the application executable file you just copied.
You may receive an error if some of the modules required by your applications are missing.
Before you analyze the module dependencies is important to configure Dependency Walker to check DLL in the same folder where your application file is stored. This is needed because some Windows CE DLLs have the same name of Win32 system DLLs but different entry points. To configure the DLL search path select “Options\Configure Module Search Order…” from Depenency Walker main menu.
Select “The application directory” from the “Current Search Order” list, select it, and move it to the top of the list using the “Move Up” button.
The system will ask to refresh the window contents to reflect your configuration change, click on “Yes” to proceed.
Now you can inspect myapp.exe dependencies. Some DLLs are missing (XAMLRUNTIME.DLL and TILEENGINE.DLL) and OLE32.DLL exists but does not export the “CoInitialize” entry point that is required by myapp.exe.
The bad news is that MyApp.exe will not run on your OS Image, the good news is that now you know what’s missing and you can add the required modules to your OS Design and fix the problem!