Some changes in DynLib internals
Former-commit-id: cfd8cbbdf30e2b0a6faa3a283c860001b07ae6de
This commit is contained in:
parent
26a6158f8f
commit
b85a5bd5d5
|
|
@ -5,6 +5,7 @@
|
||||||
#include <Nazara/Core/DynLib.hpp>
|
#include <Nazara/Core/DynLib.hpp>
|
||||||
#include <Nazara/Core/Config.hpp>
|
#include <Nazara/Core/Config.hpp>
|
||||||
#include <Nazara/Core/Error.hpp>
|
#include <Nazara/Core/Error.hpp>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#if defined(NAZARA_PLATFORM_WINDOWS)
|
#if defined(NAZARA_PLATFORM_WINDOWS)
|
||||||
#include <Nazara/Core/Win32/DynLibImpl.hpp>
|
#include <Nazara/Core/Win32/DynLibImpl.hpp>
|
||||||
|
|
@ -66,14 +67,15 @@ bool NzDynLib::Load(const NzString& libraryPath, bool appendExtension)
|
||||||
|
|
||||||
Unload();
|
Unload();
|
||||||
|
|
||||||
m_impl = new NzDynLibImpl(this);
|
NzString path = libraryPath;
|
||||||
if (!m_impl->Load(libraryPath, appendExtension, &m_lastError))
|
if (appendExtension && !path.EndsWith(NAZARA_DYNLIB_EXTENSION))
|
||||||
{
|
path += NAZARA_DYNLIB_EXTENSION;
|
||||||
delete m_impl;
|
|
||||||
m_impl = nullptr;
|
|
||||||
|
|
||||||
|
std::unique_ptr<NzDynLibImpl> impl(new NzDynLibImpl(this));
|
||||||
|
if (!impl->Load(path, &m_lastError))
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
m_impl = impl.release();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,9 @@ NzDynLibFunc NzDynLibImpl::GetSymbol(const NzString& symbol, NzString* errorMess
|
||||||
return sym;
|
return sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NzDynLibImpl::Load(const NzString& libraryPath, bool appendExtension, NzString* errorMessage)
|
bool NzDynLibImpl::Load(const NzString& libraryPath, NzString* errorMessage)
|
||||||
{
|
{
|
||||||
NzString path = libraryPath;
|
std::unique_ptr<wchar_t[]> wPath(libraryPath.GetWideBuffer());
|
||||||
if (appendExtension && !path.EndsWith(".dll"))
|
|
||||||
path += ".dll";
|
|
||||||
|
|
||||||
std::unique_ptr<wchar_t[]> wPath(path.GetWideBuffer());
|
|
||||||
m_handle = LoadLibraryW(wPath.get());
|
m_handle = LoadLibraryW(wPath.get());
|
||||||
|
|
||||||
if (m_handle)
|
if (m_handle)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class NzDynLibImpl : NzNonCopyable
|
||||||
~NzDynLibImpl() = default;
|
~NzDynLibImpl() = default;
|
||||||
|
|
||||||
NzDynLibFunc GetSymbol(const NzString& symbol, NzString* errorMessage) const;
|
NzDynLibFunc GetSymbol(const NzString& symbol, NzString* errorMessage) const;
|
||||||
bool Load(const NzString& libraryPath, bool appendExtension, NzString* errorMessage);
|
bool Load(const NzString& libraryPath, NzString* errorMessage);
|
||||||
void Unload();
|
void Unload();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue