@@ -287,16 +287,24 @@ class WebView2Instance {
287287 };
288288#endif
289289
290+ #ifdef WEBUI_WEBVIEW_STATIC
291+ // The WebView2LoaderStatic.lib is linked, no need to load WebView2Loader.dll
292+ #else
290293// Cached WebView2Loader.dll handle and function pointer
291294static HMODULE g_webviewLib = NULL ;
292295typedef HRESULT (__stdcall *CreateCoreWebView2EnvironmentWithOptionsFunc)(
293296 PCWSTR, PCWSTR, ICoreWebView2EnvironmentOptions*,
294297 ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler*);
295298static CreateCoreWebView2EnvironmentWithOptionsFunc g_createEnv = NULL ;
299+ #endif
296300
297301extern " C" {
298302
299303bool _webui_win32_wv2_check_loader_dll (void ) {
304+ #ifdef WEBUI_WEBVIEW_STATIC
305+ // The WebView2LoaderStatic.lib is linked, no need to load WebView2Loader.dll
306+ return true ;
307+ #else
300308 // Already loaded and cached
301309 if (g_webviewLib && g_createEnv) {
302310 return true ;
@@ -314,6 +322,7 @@ bool _webui_win32_wv2_check_loader_dll(void) {
314322 return false ;
315323 }
316324 return true ;
325+ #endif
317326}
318327
319328_webui_win32_wv2_handle _webui_win32_wv2_create (void ) {
@@ -441,11 +450,9 @@ bool _webui_win32_wv2_create_environment(_webui_win32_wv2_handle handle, wchar_t
441450 if (!handle) return false ;
442451 WebView2Instance* instance = static_cast <WebView2Instance*>(handle);
443452
444- // Ensure DLL is loaded (use cached if available)
445- if (!g_webviewLib || !g_createEnv) {
446- if (!_webui_win32_wv2_check_loader_dll ()) {
447- return false ;
448- }
453+ // Ensure loader is ready (DLL or static)
454+ if (!_webui_win32_wv2_check_loader_dll ()) {
455+ return false ;
449456 }
450457
451458 _wputenv (L" WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--enable-features=msWebView2EnableDraggableRegions" );
@@ -455,13 +462,21 @@ bool _webui_win32_wv2_create_environment(_webui_win32_wv2_handle handle, wchar_t
455462 if (!environmentHandler) {
456463 return false ;
457464 }
465+ #ifdef WEBUI_WEBVIEW_STATIC
466+ HRESULT hr = CreateCoreWebView2EnvironmentWithOptions (NULL , cacheFolder, NULL , environmentHandler.Get ());
467+ #else
458468 HRESULT hr = g_createEnv (NULL , cacheFolder, NULL , environmentHandler.Get ());
469+ #endif
459470 #else
460471 EnvironmentCompletedHandler* environmentHandler = new EnvironmentCompletedHandler (instance);
461472 if (!environmentHandler) {
462473 return false ;
463474 }
475+ #ifdef WEBUI_WEBVIEW_STATIC
476+ HRESULT hr = CreateCoreWebView2EnvironmentWithOptions (NULL , cacheFolder, NULL , environmentHandler);
477+ #else
464478 HRESULT hr = g_createEnv (NULL , cacheFolder, NULL , environmentHandler);
479+ #endif
465480 #endif
466481
467482 return SUCCEEDED (hr);
0 commit comments