desktop_webview_window fails to link on Windows ARM64
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- c, cmake
- Ambito
- build-system, desktop, operating-systems
Direzione di ricerca
Esamina innanzitutto la configurazione CMake del plugin Windows e i file loader WebView2 esistenti in windows/libs/x64. Verifica in che modo il pacchetto Microsoft.Web.WebView2 fornisce i binari ARM64, quindi verifica che una build nativa Flutter per Windows ARM64 venga collegata senza l’avviso x64-versus-ARM64 né simboli non risolti. Il lavoro è completato quando entrambe le architetture supportate selezionano binari loader corrispondenti e il plugin viene compilato correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Issue
desktop_webview_window fails to build for native Windows ARM64 Flutter apps.
Flutter 3.44.1 auto-selects windows-arm64 on Windows ARM hosts. The plugin target is then built as ARM64, but the plugin links the x64 WebView2 loader import library.
Evidence
Environment:
Flutter 3.44.1
Dart 3.12.1
Windows ARM64 host
desktop_webview_window 0.3.0
Build failure:
web_view.obj : error LNK2019: unresolved external symbol CreateCoreWebView2EnvironmentWithOptions
web_view_window_plugin.obj : error LNK2019: unresolved external symbol GetAvailableCoreWebView2BrowserVersionString
windows\flutter\ephemeral\.plugin_symlinks\desktop_webview_window\windows\libs\x64\Webview2Loader.dll.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'ARM64'
desktop_webview_window_plugin.dll : fatal error LNK1120: 2 unresolved externals
Current Windows CMake hardcodes x64:
add_library(Webview2 SHARED IMPORTED GLOBAL)
SET_PROPERTY(TARGET Webview2 PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/libs/x64/Webview2Loader.dll)
SET_PROPERTY(TARGET Webview2 PROPERTY IMPORTED_IMPLIB ${CMAKE_CURRENT_SOURCE_DIR}/libs/x64/Webview2Loader.dll.lib)
The package only includes:
windows/libs/x64/WebView2Loader.dll
windows/libs/x64/WebView2Loader.dll.lib
Root Cause
The plugin always links the x64 WebView2 loader import library, regardless of the Windows build architecture.
On Windows ARM64 builds, MSVC cannot link an x64 .lib into an ARM64 plugin DLL, which produces LNK4272 and unresolved WebView2 symbols.
Suggested Fix
Ship WebView2 loader binaries for all supported Windows architectures and select the correct directory from CMake.
Suggested layout:
windows/libs/x64/WebView2Loader.dll
windows/libs/x64/WebView2Loader.dll.lib
windows/libs/arm64/WebView2Loader.dll
windows/libs/arm64/WebView2Loader.dll.lib
Suggested CMake behavior:
if(CMAKE_GENERATOR_PLATFORM MATCHES "ARM64")
set(WEBVIEW2_LOADER_ARCH "arm64")
else()
set(WEBVIEW2_LOADER_ARCH "x64")
endif()
set_property(TARGET Webview2 PROPERTY IMPORTED_LOCATION
${CMAKE_CURRENT_SOURCE_DIR}/libs/${WEBVIEW2_LOADER_ARCH}/WebView2Loader.dll)
set_property(TARGET Webview2 PROPERTY IMPORTED_IMPLIB
${CMAKE_CURRENT_SOURCE_DIR}/libs/${WEBVIEW2_LOADER_ARCH}/WebView2Loader.dll.lib)
Microsoft ships the ARM64 WebView2 loader in the Microsoft.Web.WebView2 NuGet package.
- Lingua principale
- C
- Stelle
- 512
- Fork
- 296
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di MixinNetwork/flutter-plugins
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
MixinNetwork/flutter-plugins#512 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
MixinNetwork/flutter-plugins#507 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
MixinNetwork/flutter-plugins#413 · 8 reazioni ·
-
Warnings about Java appletsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
MixinNetwork/flutter-plugins#401 · 2 reazioni ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 50/100
MixinNetwork/flutter-plugins#509 · 1 commento ·
Tutte le issue di MixinNetwork/flutter-plugins
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 76/100
SteamGridDB/SGDBoop#147 ·
-
Doc: insert executor and incremental consolidation leave sorted runs, not globally sorted headsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
semantic-reasoning/wirelog#2133 ·
I maintainer di solito rispondono entro 1 giorno
-
backlog
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
EchoTools/nevr-runtime#454 ·
I maintainer di solito rispondono entro 1 giorno
-
initramfs: -type f (#18686) skips the libcurl.so.4 symlink, libcurl no longer copied into initramfsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno