[PATCH vkd3d 2/8] include: Implement vkd3d_dl*() wrappers for Win32 platforms.
Zebediah Figura
zfigura at codeweavers.com
Mon Apr 18 20:28:42 CDT 2022
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
include/private/vkd3d_common.h | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/include/private/vkd3d_common.h b/include/private/vkd3d_common.h
index a85bc6d69..349b1acf6 100644
--- a/include/private/vkd3d_common.h
+++ b/include/private/vkd3d_common.h
@@ -27,6 +27,7 @@
#include <limits.h>
#include <stdbool.h>
#include <stdint.h>
+#include <stdio.h>
#ifdef _MSC_VER
#include <intrin.h>
@@ -250,7 +251,33 @@ static inline void vkd3d_parse_version(const char *version, int *major, int *min
HRESULT hresult_from_vkd3d_result(int vkd3d_result);
-#ifdef HAVE_DLFCN_H
+#ifdef _WIN32
+static inline void *vkd3d_dlopen(const char *name)
+{
+ return LoadLibraryA(name);
+}
+
+static inline void *vkd3d_dlsym(void *handle, const char *symbol)
+{
+ return GetProcAddress(handle, symbol);
+}
+
+static inline int vkd3d_dlclose(void *handle)
+{
+ return FreeLibrary(handle);
+}
+
+static inline const char *vkd3d_dlerror(void)
+{
+ unsigned int error = GetLastError();
+ static char message[256];
+
+ if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, 0, message, sizeof(message), NULL))
+ return message;
+ sprintf(message, "Unknown error %u.\n", error);
+ return message;
+}
+#elif defined(HAVE_DLFCN_H)
#include <dlfcn.h>
static inline void *vkd3d_dlopen(const char *name)
--
2.35.1
More information about the wine-devel
mailing list