This class is defined in metasm/os/windows_exports.rb

It defines an EXPORT constant, a Hash, whose keys are the standard win32 API symbol names, and values are the library name where you can find this symbol.

The equivalent for GNU/Linux is GNUExports


The main usage of this class is the automatic generation of the core/PE.txt import directories from the external symbols referenced by a binary during compilation.

This is done in the automagic_symbols method.


The current version holds the symbols available in the Windows XP SP2 32-bit standard libraries:

Ruby symbols are also defined, from msvcrt-ruby18.

Ruby library name

On creation, the current ruby library name is inferred from the RUBY_PLATFORM constant, in an effort to try to use the available ruby library filename.

The only transformation supported now is to rewrite the ruby version number appearing in the filename for msvcrt-compiled binaries, so that you get the correct msvcrt-ruby192 name for exemple under ruby1.9.

This is implemented in the patch_rubylib_to_current_interpreter method (which is aptly named).


Note that binaries compiled this way will not work on other machines where the exact same library is unavailable.