public static bool CreateEngine(out IEngineCore pEngineCore, E_GET_ENGINE_FLAGS eFlags) { if (pGetEngine == null) { pEngineCore = null; return false; } pGetEngine(out pEngineCore, eFlags, _DGLE_SDK_VER_); return true; }
public static bool GetEngine([MarshalAs(UnmanagedType.LPStr)] string pcDllFileName, out IEngineCore pEngineCore, E_GET_ENGINE_FLAGS eFlags) { pEngineCore = null; if (hServer == IntPtr.Zero) { if (hServer == IntPtr.Zero) { hServer = Imports.LoadLibrary(pcDllFileName); if (hServer == IntPtr.Zero) return false; } if (pGetEngine == null && pFreeEngine == null) { IntPtr pGetEnginePointer = Imports.GetProcAddress(hServer, "CreateEngine"); pGetEngine = Marshal.GetDelegateForFunctionPointer(pGetEnginePointer, typeof(GetEngineDelegate)) as GetEngineDelegate; IntPtr pFreeEnginePointer = Imports.GetProcAddress(hServer, "FreeEngine"); pFreeEngine = Marshal.GetDelegateForFunctionPointer(pFreeEnginePointer, typeof(FreeEngineDelegate)) as FreeEngineDelegate; if (pGetEngine == null || pFreeEngine == null) { Imports.FreeLibrary(hServer); hServer = IntPtr.Zero; return false; } } CreateEngine(out pEngineCore, eFlags); return (pEngineCore != null); } else return false; }