Windows/Windows CE: Do not dynamically load shell32/coredll.
Those libraries are contained in QMAKE_LIBS_CORE and GetSpecialFolderPath() is present in all supported versions. Change-Id: Iae40714e0f234625b063aeb50e29fc79c4aaa6ea Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>bb10
parent
8f80ff338e
commit
2433ee06ef
|
|
@ -48,7 +48,7 @@ CXXFLAGS_BARE = $(CFLAGS_BARE)
|
|||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
LFLAGS =
|
||||
LIBS = ole32.lib advapi32.lib
|
||||
LIBS = ole32.lib advapi32.lib shell32.lib
|
||||
LINKQMAKE = $(LINKER) $(LFLAGS) -OUT:qmake.exe $(OBJS) $(QTOBJS) $(LIBS)
|
||||
ADDCLEAN = qmake.pdb qmake.ilk
|
||||
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@
|
|||
#ifdef Q_OS_WIN // for homedirpath reading from registry
|
||||
# include <private/qsystemlibrary_p.h>
|
||||
# include <qt_windows.h>
|
||||
# include <shlobj.h>
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WINRT
|
||||
|
|
@ -1036,18 +1037,9 @@ static QString windowsConfigPath(int type)
|
|||
{
|
||||
QString result;
|
||||
|
||||
#ifndef Q_OS_WINCE
|
||||
QSystemLibrary library(QLatin1String("shell32"));
|
||||
#else
|
||||
QSystemLibrary library(QLatin1String("coredll"));
|
||||
#endif // Q_OS_WINCE
|
||||
typedef BOOL (WINAPI*GetSpecialFolderPath)(HWND, LPWSTR, int, BOOL);
|
||||
GetSpecialFolderPath SHGetSpecialFolderPath = (GetSpecialFolderPath)library.resolve("SHGetSpecialFolderPathW");
|
||||
if (SHGetSpecialFolderPath) {
|
||||
wchar_t path[MAX_PATH];
|
||||
SHGetSpecialFolderPath(0, path, type, false);
|
||||
wchar_t path[MAX_PATH];
|
||||
if (SHGetSpecialFolderPath(0, path, type, false))
|
||||
result = QString::fromWCharArray(path);
|
||||
}
|
||||
|
||||
if (result.isEmpty()) {
|
||||
switch (type) {
|
||||
|
|
|
|||
|
|
@ -68,21 +68,6 @@
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
typedef BOOL (WINAPI*GetSpecialFolderPath)(HWND, LPWSTR, int, BOOL);
|
||||
static GetSpecialFolderPath resolveGetSpecialFolderPath()
|
||||
{
|
||||
static GetSpecialFolderPath gsfp = 0;
|
||||
if (!gsfp) {
|
||||
#ifndef Q_OS_WINCE
|
||||
QSystemLibrary library(QLatin1String("shell32"));
|
||||
#else
|
||||
QSystemLibrary library(QLatin1String("coredll"));
|
||||
#endif // Q_OS_WINCE
|
||||
gsfp = (GetSpecialFolderPath)library.resolve("SHGetSpecialFolderPathW");
|
||||
}
|
||||
return gsfp;
|
||||
}
|
||||
|
||||
static QString convertCharArray(const wchar_t *path)
|
||||
{
|
||||
return QDir::fromNativeSeparators(QString::fromWCharArray(path));
|
||||
|
|
@ -92,10 +77,6 @@ QString QStandardPaths::writableLocation(StandardLocation type)
|
|||
{
|
||||
QString result;
|
||||
|
||||
static GetSpecialFolderPath SHGetSpecialFolderPath = resolveGetSpecialFolderPath();
|
||||
if (!SHGetSpecialFolderPath)
|
||||
return QString();
|
||||
|
||||
wchar_t path[MAX_PATH];
|
||||
|
||||
switch (type) {
|
||||
|
|
@ -185,8 +166,7 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
|
|||
// type-specific handling goes here
|
||||
|
||||
#ifndef Q_OS_WINCE
|
||||
static GetSpecialFolderPath SHGetSpecialFolderPath = resolveGetSpecialFolderPath();
|
||||
if (SHGetSpecialFolderPath) {
|
||||
{
|
||||
wchar_t path[MAX_PATH];
|
||||
switch (type) {
|
||||
case ConfigLocation: // same as DataLocation, on Windows (oversight, but too late to fix it)
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ macx {
|
|||
if(contains(QT_CONFIG, zlib)|cross_compile):include(../../3rdparty/zlib.pri)
|
||||
else:include(../../3rdparty/zlib_dependency.pri)
|
||||
|
||||
win32:LIBS += -luser32 -lole32 -ladvapi32
|
||||
win32:LIBS += -luser32 -lole32 -ladvapi32 -lshell32
|
||||
|
||||
lib.CONFIG = dummy_install
|
||||
INSTALLS += lib
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ CXXFLAGS_BARE = -nologo -Zm200 -Zc:wchar_t -MT -W3 -GR -EHsc -w34100 -w34189 $(E
|
|||
CXXFLAGS = -FIconfigure_pch.h -Yuconfigure_pch.h -Fp$(PCH) -MP $(CXXFLAGS_BARE)
|
||||
LINK = link
|
||||
LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:"configure.intermediate.manifest"
|
||||
LIBS = ole32.lib advapi32.lib
|
||||
LIBS = ole32.lib advapi32.lib shell32.lib
|
||||
|
||||
TARGET = ..\..\configure.exe
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue