private NativeModule module; // so it doesn't get unloaded #pragma warning restore 0414 private static FunctionLoadResult <T> LazyInitialization(NativeModule module, string functionName) { if (module.Module == IntPtr.Zero) { return(new FunctionLoadResult <T>(FunctionLoadResultKind.LibraryNotFound)); } else { IntPtr funcptr = FunctionInterop.LoadFunctionPointer(module.Module, functionName); if (funcptr == IntPtr.Zero) { return(new FunctionLoadResult <T>(FunctionLoadResultKind.FunctionNotFound)); } else { return(new FunctionLoadResult <T>(Marshal.GetDelegateForFunctionPointer <T>(funcptr))); } } }