Kodi Development 22.0
for Binary and Script based Add-Ons
 
Loading...
Searching...
No Matches
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:431
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

Macro Definition Documentation

◆ REGISTER_DLL_SYMBOL

#define REGISTER_DLL_SYMBOL ( functionPtr)
Value:
kodi::tools::CDllHelper::RegisterSymbol(functionPtr, #functionPtr)
bool RegisterSymbol(T &functionPtr, const char *strFunctionPtr)
Function to register requested library symbol.
Definition DllHelper.h:190

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()

template<typename T >
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;