+/*!
+ * @brief Create a new libCEC instance.
+ * @param configuration The configuration to pass to libCEC
+ * @param strLib The name of and/or path to libCEC
+ * @return An instance of ICECAdapter or NULL on error.
+ */
+CEC::ICECAdapter *LibCecInitialise(CEC::libcec_configuration *configuration, const char *strLib = NULL)
+{
+ if (!g_libCEC)
+#if defined(_WIN64)
+ g_libCEC = LoadLibrary(strLib ? strLib : "libcec.x64.dll");
+#else
+ g_libCEC = LoadLibrary(strLib ? strLib : "libcec.dll");
+#endif
+ if (!g_libCEC)
+ return NULL;
+
+ typedef void* (__cdecl*_LibCecInitialise)(CEC::libcec_configuration *);
+ _LibCecInitialise LibCecInitialise;
+ LibCecInitialise = (_LibCecInitialise) (GetProcAddress(g_libCEC, "CECInitialise"));
+ if (!LibCecInitialise)
+ {
+ cout << "cannot find CECInitialise" << endl;
+ return NULL;
+ }
+
+ return static_cast< CEC::ICECAdapter* > (LibCecInitialise(configuration));
+}
+