Use proper types according to MSDN and fix clang build of windows dynlib (#11828)
This commit is contained in:
parent
4c73139316
commit
2fdba334da
1 changed files with 8 additions and 12 deletions
|
|
@ -156,28 +156,24 @@ elif defined(windows) or defined(dos):
|
||||||
# Native Windows Implementation
|
# Native Windows Implementation
|
||||||
# =======================================================================
|
# =======================================================================
|
||||||
#
|
#
|
||||||
when defined(cpp):
|
|
||||||
type
|
type
|
||||||
THINSTANCE {.importc: "HINSTANCE".} = object
|
HMODULE {.importc: "HMODULE".} = pointer
|
||||||
x: pointer
|
FARPROC {.importc: "FARPROC".} = pointer
|
||||||
else:
|
|
||||||
type
|
|
||||||
THINSTANCE {.importc: "HINSTANCE".} = pointer
|
|
||||||
|
|
||||||
proc FreeLibrary(lib: THINSTANCE) {.importc, header: "<windows.h>", stdcall.}
|
proc FreeLibrary(lib: HMODULE) {.importc, header: "<windows.h>", stdcall.}
|
||||||
proc winLoadLibrary(path: cstring): THINSTANCE {.
|
proc winLoadLibrary(path: cstring): HMODULE {.
|
||||||
importc: "LoadLibraryA", header: "<windows.h>", stdcall.}
|
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.}
|
importc: "GetProcAddress", header: "<windows.h>", stdcall.}
|
||||||
|
|
||||||
proc loadLib(path: string, globalSymbols=false): LibHandle =
|
proc loadLib(path: string, globalSymbols=false): LibHandle =
|
||||||
result = cast[LibHandle](winLoadLibrary(path))
|
result = cast[LibHandle](winLoadLibrary(path))
|
||||||
proc loadLib(): LibHandle =
|
proc loadLib(): LibHandle =
|
||||||
result = cast[LibHandle](winLoadLibrary(nil))
|
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 =
|
proc symAddr(lib: LibHandle, name: cstring): pointer =
|
||||||
result = getProcAddress(cast[THINSTANCE](lib), name)
|
result = cast[pointer](getProcAddress(cast[HMODULE](lib), name))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
{.error: "no implementation for dynlib".}
|
{.error: "no implementation for dynlib".}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue