Foobar2000:Development:SDK Contents

From Hydrogenaudio Knowledgebase
Jump to: navigation, search


Every component made with the foobar2000 SDK must link against these.

foobar2000_SDK project

Contains declarations of services and various service-specific helper code.

This project defines how different parts of foobar2000 (core, components) interact with each other.

Every component must link against it.

foobar2000_component_client project

Generates the DLL entrypoint function for your component, to allow foobar2000 to load and interact with your component.

Every component must link against it.


Various utility code used by foobar2000 components. Mainly Win32 function wrappers working with UTF-8 strings instead of wchar_t, as foobar2000 uses UTF-8 strings internally.

This was once, before foobar2000 v0.9, called utf8api.dll and was specialized for Windows 9x (ANSI) and NT (Unicode), abstracting away the differences between the two and allowing the same foobar2000 components to run natively on both architectures. Most of it is no longer needed but preserved for backwards compatiblity with existing components.

Functions to interact with foobar2000 crash report writer are also implemented in shared.dll as they can't be using foobar2000 services, since they must be available before the services are initialized.


A class library used by all other code.

Every component must link against it as foobar2000_SDK etc use it heavily.


These are not required for building a working foobar2000 component, but you will probably want to use them anyway.


A library of various helper code commonly used by foobar2000 components, such as cuesheet operations, tools to remember window positions using cfg_var objects, helper classes for reading audio data from user's audio files.

This library now holds only code that is specific to foobar2000 / depends on foobar2000 SDK declarations one way or another. All code that can be used outside foobar2000 has been moved to libPPUI.


A library of all helper code, mainly Windows UI code as the name implies, that is commonly used in foobar2000 but can be freely used in unrelated projects, that is does not depend on foobar2000 in any way.

libPPUI most notably includes CListControl, which implements the default playlist view of foobar2000.

libPPUI is released under a non-restrictive license. Reuse in other projects - including commercial projects - is encouraged. Credits in binary redistribution are not required.