Kodi Development  20.0
for Binary and Script based Add-Ons
class CDllHelper

Detailed Description

Class to help with load of shared library functions
You can add them as parent to your class and to help with load of shared library functions.

Note
To use on Windows must you also include dlfcn-win32 on your addon!

Furthermore, this allows the use of Android where the required library is copied to an EXE useable folder.

Example:

#include <kodi/tools/DllHelper.h>
...
class CMyInstance : public kodi::addon::CInstanceAudioDecoder,
{
public:
CMyInstance(KODI_HANDLE instance, const std::string& kodiVersion);
bool Start();
...
// The pointers for on shared library exported functions
int (*Init)();
void (*Cleanup)();
int (*GetLength)();
};
CMyInstance::CMyInstance(KODI_HANDLE instance, const std::string& kodiVersion)
: CInstanceAudioDecoder(instance, kodiVersion)
{
}
bool CMyInstance::Start()
{
std::string lib = kodi::GetAddonPath("myLib.so");
if (!LoadDll(lib)) return false;
if (!REGISTER_DLL_SYMBOL(Init)) return false;
if (!REGISTER_DLL_SYMBOL(Cleanup)) return false;
if (!REGISTER_DLL_SYMBOL(GetLength)) return false;
Init();
return true;
}
...
Definition: AudioDecoder.h:382
Definition: DllHelper.h:93
#define REGISTER_DLL_SYMBOL(functionPtr)
Macro to translate the given pointer value name of functions to requested function name.
Definition: DllHelper.h:27
std::string ATTRIBUTE_HIDDEN GetAddonPath(const std::string &append="")
To get the addon system installation folder.
Definition: AddonBase.h:649

Macro Definition Documentation

◆ REGISTER_DLL_SYMBOL

#define REGISTER_DLL_SYMBOL (   functionPtr)     kodi::tools::CDllHelper::RegisterSymbol(functionPtr, #functionPtr)

Macro to translate the given pointer value name of functions to requested function name.

Note
This should always be used and does the work of kodi::tools::CDllHelper::RegisterSymbol().

Function Documentation

◆ CDllHelper()

CDllHelper ( )
default

Class constructor.

◆ ~CDllHelper()

virtual ~CDllHelper ( )
inlinevirtual

Class destructor.

◆ LoadDll()

bool LoadDll ( std::string  path)
inline

Function to load requested library.

Parameters
[in]pathThe path with filename of shared library to load
Returns
true if load was successful done

◆ RegisterSymbol()

bool RegisterSymbol ( T &  functionPtr,
const char *  strFunctionPtr 
)
inline

Function to register requested library symbol.

Warning
This function should not be used, use instead the macro REGISTER_DLL_SYMBOL to register the symbol pointer.

Use this always via Macro, e.g.:

return false;