[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