From 7efda762dabb7bc8dd8aa7744d9933f22d070555 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 22 Mar 2012 15:01:50 +0100 Subject: Fix loading of the ICU dynamic libraries on Windows. - Account for differing library name on Windows. - Improve error messages. Acked-by: John Layt Change-Id: Ib567f8c79ab4b5655cdb2fe050f91013e9305263 Reviewed-by: Friedemann Kleint Reviewed-by: Denis Dzyubenko --- src/corelib/tools/qlocale_icu.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/corelib/tools/qlocale_icu.cpp') diff --git a/src/corelib/tools/qlocale_icu.cpp b/src/corelib/tools/qlocale_icu.cpp index ee2e5f436a..b3b8836f11 100644 --- a/src/corelib/tools/qlocale_icu.cpp +++ b/src/corelib/tools/qlocale_icu.cpp @@ -81,9 +81,19 @@ bool qt_initIcu(const QString &localeString) if (status == NotLoaded) { // resolve libicui18n - QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT)); + const QString version = QString::fromLatin1(U_ICU_VERSION_SHORT); +#ifdef Q_OS_WIN + // QLibrary on Windows does not use the version number, the libraries + // are named "icuin.dll", though. + QString libName = QStringLiteral("icuin") + version; +#else + QString libName = QStringLiteral("icui18n"); +#endif + QLibrary lib(libName, version); if (!lib.load()) { - qWarning() << "Unable to load library icui18n" << lib.errorString(); + qWarning("Unable to load library '%s' version %s: %s", + qPrintable(libName), qPrintable(version), + qPrintable(lib.errorString())); status = ErrorLoading; return false; } @@ -104,15 +114,22 @@ bool qt_initIcu(const QString &localeString) ptr_ucol_close = 0; ptr_ucol_strcoll = 0; - qWarning("Unable to find symbols in icui18n"); + qWarning("Unable to find symbols in '%s'.", qPrintable(libName)); status = ErrorLoading; return false; } // resolve libicuuc - QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT)); +#ifdef Q_OS_WIN + libName = QStringLiteral("icuuc") + version; +#else + libName = QStringLiteral("icuuc"); +#endif + QLibrary ucLib(libName, version); if (!ucLib.load()) { - qWarning() << "Unable to load library icuuc" << ucLib.errorString(); + qWarning("Unable to load library '%s' version %s: %s", + qPrintable(libName), qPrintable(version), + qPrintable(ucLib.errorString())); status = ErrorLoading; return false; } @@ -129,7 +146,7 @@ bool qt_initIcu(const QString &localeString) ptr_u_strToUpper = 0; ptr_u_strToLower = 0; - qWarning("Unable to find symbols in icuuc"); + qWarning("Unable to find symbols in '%s'", qPrintable(libName)); status = ErrorLoading; return false; } -- cgit v1.2.3