Fix loading of the ICU dynamic libraries on Windows.
- Account for differing library name on Windows. - Improve error messages. Acked-by: John Layt <jlayt@kde.org> Change-Id: Ib567f8c79ab4b5655cdb2fe050f91013e9305263 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
This commit is contained in:
parent
5e9089135b
commit
7efda762da
@ -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<version>.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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user