From: Nguyen Dinh Phi Date: Thu, 18 Dec 2025 08:54:45 +0000 (+0800) Subject: qga/vss-win32: Fix ConvertStringToBSTR redefinition with newer MinGW X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1df49269a1a3b33073c2c17a269dcf0f5e423e9;p=thirdparty%2Fqemu.git qga/vss-win32: Fix ConvertStringToBSTR redefinition with newer MinGW Newer versions of MinGW-w64 provide ConvertStringToBSTR() in the _com_util namespace via . This causes a redefinition error when building qemu-ga on Windows with these toolchains. Add a meson check to detect whether ConvertStringToBSTR is already available, and conditionally compile our fallback implementation only when the system does not provide one. Signed-off-by: Nguyen Dinh Phi Suggested-by: Pierrick Bouvier Reviewed-by: Pierrick Bouvier Reviewed-by: Kostiantyn Kostiuk Message-ID: <20251218085446.462827-2-phind.uet@gmail.com> Signed-off-by: Philippe Mathieu-Daudé --- diff --git a/meson.build b/meson.build index 14b1160c15..8111e62bf1 100644 --- a/meson.build +++ b/meson.build @@ -3241,6 +3241,18 @@ endif # Detect host pointer size for the target configuration loop. host_long_bits = cc.sizeof('void *') * 8 +# Detect if ConvertStringToBSTR has been defined in _com_util namespace +if host_os == 'windows' + has_convert_string_to_bstr = cxx.links(''' + #include + int main() { + BSTR b = _com_util::ConvertStringToBSTR("test"); + return b ? 0 : 1; + } + ''') + config_host_data.set('CONFIG_CONVERT_STRING_TO_BSTR', has_convert_string_to_bstr) +endif + ######################## # Target configuration # ######################## diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index 7b25d9098b..5b7a8e9bc5 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -549,6 +549,7 @@ STDAPI DllUnregisterServer(void) /* Support function to convert ASCII string into BSTR (used in _bstr_t) */ +#ifndef CONFIG_CONVERT_STRING_TO_BSTR namespace _com_util { BSTR WINAPI ConvertStringToBSTR(const char *ascii) { @@ -566,6 +567,7 @@ namespace _com_util return bstr; } } +#endif /* Stop QGA VSS provider service using Winsvc API */ STDAPI StopService(void)