summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2015-11-12 16:08:12 +0100
committerAndreas Rumpf <rumpf_a@web.de>2015-11-12 16:08:12 +0100
commit0f7fdd8bf4d4f747f01c4d95ce64d96763286afc (patch)
treeae2bd0ab3e94d3c75a9ad1d7d7610179a56d083d
parentebc3438cc22c3a65425811a474fcad8d3c261c24 (diff)
parente8bc19f79c23d3bda57e2a9d1a68e653656b80a9 (diff)
downloadNim-0f7fdd8bf4d4f747f01c4d95ce64d96763286afc.tar.gz
Merge pull request #3536 from jyelon/proc-addr
Add 'auto-decoration' to nimGetProcAddr
-rw-r--r--lib/system/dyncalls.nim7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/system/dyncalls.nim b/lib/system/dyncalls.nim
index 908aa551b..4043c8714 100644
--- a/lib/system/dyncalls.nim
+++ b/lib/system/dyncalls.nim
@@ -105,7 +105,12 @@ elif defined(windows) or defined(dos):
 
   proc nimGetProcAddr(lib: LibHandle, name: cstring): ProcAddr =
     result = getProcAddress(cast[THINSTANCE](lib), name)
-    if result == nil: procAddrError(name)
+    if result != nil: return
+    for i in countup(0, 50):
+      var decorated = "_" & $name & "@" & $(i * 4)
+      result = getProcAddress(cast[THINSTANCE](lib), cstring(decorated))
+      if result != nil: return
+    procAddrError(name)
 
 else:
   {.error: "no implementation for dyncalls".}