blob: 41272ce8d9a197a545d2d1302b079fe4e24c3ecc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include "StarDynamicLib.hpp"
#include "StarFormat.hpp"
#include "StarString_windows.hpp"
#include <windows.h>
namespace Star {
class PrivateDynLib : public DynamicLib {
public:
PrivateDynLib(void* handle)
: m_handle(handle) {}
~PrivateDynLib() {
FreeLibrary((HMODULE)m_handle);
}
void* funcPtr(const char* name) {
return (void*)GetProcAddress((HMODULE)m_handle, name);
}
private:
void* m_handle;
};
String DynamicLib::libraryExtension() {
return ".dll";
}
DynamicLibUPtr DynamicLib::loadLibrary(String const& libraryName) {
void* handle = LoadLibraryW(stringToUtf16(libraryName).get());
if (handle == NULL)
return {};
return make_unique<PrivateDynLib>(handle);
}
DynamicLibUPtr DynamicLib::currentExecutable() {
void* handle = GetModuleHandle(0);
starAssert(handle);
return make_unique<PrivateDynLib>(handle);
}
}
|