2
2
3
3
#if defined __linux__ || defined __APPLE__
4
4
#include < dlfcn.h>
5
+ #else
6
+ #include < Windows.h>
5
7
#endif
6
8
7
9
namespace mplcairo ::os {
8
10
9
11
#if defined __linux__ || defined __APPLE__
10
- void * dlopen (char const * filename) {
12
+ using library_t = void *;
13
+ using symbol_t = void *;
14
+
15
+ library_t dlopen (char const * filename) {
11
16
return ::dlopen (filename, RTLD_LAZY);
12
17
}
13
18
14
- bool dlclose (void * handle) {
19
+ bool dlclose (library_t handle) {
15
20
return ::dlclose (handle);
16
21
}
17
22
18
- void * dlsym (void * handle, char const * symbol) {
23
+ symbol_t dlsym (library_t handle, char const * symbol) {
19
24
return ::dlsym (handle, symbol);
20
25
}
21
26
@@ -24,15 +29,18 @@ char const* dlerror() {
24
29
}
25
30
26
31
#elif _WIN32
27
- void * dlopen (char const * filename) {
32
+ using library_t = HMODULE;
33
+ using symbol_t = FARPROC;
34
+
35
+ library_t dlopen (char const * filename) {
28
36
return LoadLibrary (filename);
29
37
}
30
38
31
- bool dlclose (void * handle) {
39
+ bool dlclose (library_t handle) {
32
40
return !FreeLibrary (handle);
33
41
}
34
42
35
- void * dlsym (void * handle, char const * symbol) {
43
+ symbol_t dlsym (library_t handle, char const * symbol) {
36
44
return GetProcAddress (handle, symbol);
37
45
}
38
46
0 commit comments