Cyberpunk 2077 ships its own ICU library and calls `u_setMemoryFunctions_65()` and C++ exports. "-Wb,--prefer-native" was in https://gitlab.winehq.org/wine/wine/-/merge_requests/8817. But it got lost when the MR got committed.
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/icuin/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/icuin/Makefile.in b/dlls/icuin/Makefile.in index 2603343fe55..452e833396f 100644 --- a/dlls/icuin/Makefile.in +++ b/dlls/icuin/Makefile.in @@ -1,6 +1,6 @@ MODULE = icuin.dll
-EXTRADLLFLAGS = -Wb,--data-only +EXTRADLLFLAGS = -Wb,--data-only -Wb,--prefer-native
SOURCES = \ icuin.spec
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/icuuc/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/icuuc/Makefile.in b/dlls/icuuc/Makefile.in index 302f15b85bb..7efc766ba92 100644 --- a/dlls/icuuc/Makefile.in +++ b/dlls/icuuc/Makefile.in @@ -1,6 +1,6 @@ MODULE = icuuc.dll
-EXTRADLLFLAGS = -Wb,--data-only +EXTRADLLFLAGS = -Wb,--data-only -Wb,--prefer-native
SOURCES = \ icuuc.spec
That's another case similar to !6527, where the app ships with an incompatible dll. I don't think loadorder is the right mechanism for that, since the dlls are really different things under the same name. This needs more thought...
On Thu Nov 27 10:24:33 2025 +0000, Alexandre Julliard wrote:
That's another case similar to !6527, where the app ships with an incompatible dll. I don't think loadorder is the right mechanism for that, since the dlls are really different things under the same name. This needs more thought...
I guess we should fix the module loader to prefer DLLs in the same directory as the executable.
Indeed, it fixes the regression detected in Cyberpunk 2077. Thanks @zhiyi
NB: Given Julliard's comment, if it isn't accepted before 10.20 release, we can work around the regression by exporting `WINEDLLOVERRIDES=icuin,icuuc=n` to launch the game.