diff options
author | Giovanni Petrantoni <sinkingsugar@gmail.com> | 2019-07-26 17:11:21 +0900 |
---|---|---|
committer | Arne Döring <arne.doering@gmx.net> | 2019-07-26 10:11:21 +0200 |
commit | 2fdba334dac4d8f1673db38ab8e98df5bc5e73f6 (patch) | |
tree | c79e2f652e3d631f1e065fa5ab8d731eab9f0133 | |
parent | 4c73139316fc7853b58f298a978ccd95aac6abe8 (diff) | |
download | Nim-2fdba334dac4d8f1673db38ab8e98df5bc5e73f6.tar.gz |
Use proper types according to MSDN and fix clang build of windows dynlib (#11828)
-rw-r--r-- | lib/pure/dynlib.nim | 20 |
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".} |