summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorGiovanni Petrantoni <sinkingsugar@gmail.com>2019-07-26 17:11:21 +0900
committerArne Döring <arne.doering@gmx.net>2019-07-26 10:11:21 +0200
commit2fdba334dac4d8f1673db38ab8e98df5bc5e73f6 (patch)
treec79e2f652e3d631f1e065fa5ab8d731eab9f0133
parent4c73139316fc7853b58f298a978ccd95aac6abe8 (diff)
downloadNim-2fdba334dac4d8f1673db38ab8e98df5bc5e73f6.tar.gz
Use proper types according to MSDN and fix clang build of windows dynlib (#11828)
-rw-r--r--lib/pure/dynlib.nim20
1 files changed, 8 insertions, 12 deletions
diff --git a/lib/pure/dynlib.nim b/lib/pure/dynlib.nim
index 215151a51..7a0c6c0a2 100644
--- a/lib/pure/dynlib.nim
+++ b/lib/pure/dynlib.nim
@@ -156,28 +156,24 @@ elif defined(windows) or defined(dos):
   # Native Windows Implementation
   # =======================================================================
   #
-  when defined(cpp):
-    type
-      THINSTANCE {.importc: "HINSTANCE".} = object
-        x: pointer
-  else:
-    type
-      THINSTANCE {.importc: "HINSTANCE".} = pointer
+  type
+    HMODULE {.importc: "HMODULE".} = pointer
+    FARPROC  {.importc: "FARPROC".} = pointer
 
-  proc FreeLibrary(lib: THINSTANCE) {.importc, header: "<windows.h>", stdcall.}
-  proc winLoadLibrary(path: cstring): THINSTANCE {.
+  proc FreeLibrary(lib: HMODULE) {.importc, header: "<windows.h>", stdcall.}
+  proc winLoadLibrary(path: cstring): HMODULE {.
       importc: "LoadLibraryA", header: "<windows.h>", stdcall.}
-  proc getProcAddress(lib: THINSTANCE, name: cstring): pointer {.
+  proc getProcAddress(lib: HMODULE, name: cstring): FARPROC {.
       importc: "GetProcAddress", header: "<windows.h>", stdcall.}
 
   proc loadLib(path: string, globalSymbols=false): LibHandle =
     result = cast[LibHandle](winLoadLibrary(path))
   proc loadLib(): LibHandle =
     result = cast[LibHandle](winLoadLibrary(nil))
-  proc unloadLib(lib: LibHandle) = FreeLibrary(cast[THINSTANCE](lib))
+  proc unloadLib(lib: LibHandle) = FreeLibrary(cast[HMODULE](lib))
 
   proc symAddr(lib: LibHandle, name: cstring): pointer =
-    result = getProcAddress(cast[THINSTANCE](lib), name)
+    result = cast[pointer](getProcAddress(cast[HMODULE](lib), name))
 
 else:
   {.error: "no implementation for dynlib".}