summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qsystemlibrary_p.h
blob: 0b4ad7dbc28a5cc8116db2ca6f44d4606284272b (plain)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QSYSTEMLIBRARY_P_H#define QSYSTEMLIBRARY_P_H//// W A R N I N G// -------------//// This file is not part of the Qt API. It exists purely as an// implementation detail. This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include <QtCore/private/qglobal_p.h>#ifdef Q_OS_WIN# include <QtCore/qstring.h># include <qt_windows.h> QT_BEGIN_NAMESPACE class QSystemLibrary {public:explicitQSystemLibrary(const QString &libraryName){ m_libraryName = libraryName;}explicitQSystemLibrary(const wchar_t*libraryName){ m_libraryName =QString::fromWCharArray(libraryName);}boolload(bool onlySystemDirectory =true){ m_handle =load((const wchar_t*)m_libraryName.utf16(), onlySystemDirectory); m_didLoad =true;return(m_handle !=nullptr);}boolisLoaded(){return(m_handle !=nullptr);} QFunctionPointer resolve(const char*symbol){if(!m_didLoad)load();if(!m_handle)returnnullptr;returnQFunctionPointer(GetProcAddress(m_handle, symbol));}static QFunctionPointer resolve(const QString &libraryName,const char*symbol){returnQSystemLibrary(libraryName).resolve(symbol);}static Q_CORE_EXPORT HINSTANCE load(const wchar_t*lpFileName,bool onlySystemDirectory =true);private: HINSTANCE m_handle =nullptr; QString m_libraryName = {};bool m_didLoad =false;}; QT_END_NAMESPACE #endif// Q_OS_WIN#endif// QSYSTEMLIBRARY_P_H
close